亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果變量包含數組中的值,如何在變量周圍添加 HTML 標簽,如果 Smarty 中不包含數組值

如果變量包含數組中的值,如何在變量周圍添加 HTML 標簽,如果 Smarty 中不包含數組值

PHP
慕的地10843 2023-12-15 16:14:43
在 Smarty 中,我有這個變量:{assign var=newNAME value='SNMS Stros Mos KOP2 APC'}我有以下數組:{$spec_array = ['Stros Mos', 'Monk Dup', 'Lip Mok']}我需要檢查“Stros Mos”是否已存在$newNAME 位于數組中。在我搜索“如何檢查字符串是否包含數組中的值”時,我發現您可以循環遍歷數組。在這種情況下,條件是:“如果該值包含在數組中,則在其周圍添加 <i></i>,如果不包含,則保持原樣”。這就是我想到的:{foreach from=$spec_array item=spec}        {if $newNAME|strpos:$spec}        <span class="thumbName">{$newNAME|replace:$spec:"<i>$spec</i>" nofilter}</span>        {else}        <span class="thumbName">{$newNAME}</span>        {/if}        {/foreach}問題是它輸出 3 <span>,如下所示:SNMS <i>Stros Mos</i> KOP2 APCSNMS Stros Mos KOP2 APCSNMS Stros Mos KOP2 APC我明白為什么:這是因為數組中的項目正在循環,如果滿足條件 - 在值周圍添加斜體,如果不直接打印它。因為數組中有 3 個值,所以我得到 3 個輸出。我只需要第一個輸出。 $newNAME 可以是任何內容,有時它不會包含 $spec_array 中的任何值。我覺得這里的 foreach 循環不起作用。我知道這是一個邏輯問題,而不是編碼問題,但我對 PHP 和 Smarty 確實很陌生,而且我不是一個偉大的思考者。任何幫助表示贊賞。
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

如果發現匹配,您需要使用新變量并中斷循環。另外,條件 $newNAME|strpos:$spec !== false 更好(如果允許在文本的“0”位置搜索字符串)。


    {foreach $spec_array as $spec}

        {if $newNAME|strpos:$spec !== false}

            {assign var=newNAME_parsed value=$newNAME|replace:$spec:"<i>$spec</i>"}

            {break}

        {else}

            {assign var=newNAME_parsed value=$newNAME}

        {/if}

    {/foreach}


<span class="thumbName">{$newNAME_parsed nofilter}</span>


查看完整回答
反對 回復 2023-12-15
  • 1 回答
  • 0 關注
  • 96 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號