在 Smarty 中,我有這個(gè)變量:{assign var=newNAME value='SNMS Stros Mos KOP2 APC'}我有以下數(shù)組:{$spec_array = ['Stros Mos', 'Monk Dup', 'Lip Mok']}我需要檢查“Stros Mos”是否已存在$newNAME 位于數(shù)組中。在我搜索“如何檢查字符串是否包含數(shù)組中的值”時(shí),我發(fā)現(xiàn)您可以循環(huán)遍歷數(shù)組。在這種情況下,條件是:“如果該值包含在數(shù)組中,則在其周圍添加 <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我明白為什么:這是因?yàn)閿?shù)組中的項(xiàng)目正在循環(huán),如果滿足條件 - 在值周圍添加斜體,如果不直接打印它。因?yàn)閿?shù)組中有 3 個(gè)值,所以我得到 3 個(gè)輸出。我只需要第一個(gè)輸出。 $newNAME 可以是任何內(nèi)容,有時(shí)它不會(huì)包含 $spec_array 中的任何值。我覺得這里的 foreach 循環(huán)不起作用。我知道這是一個(gè)邏輯問題,而不是編碼問題,但我對(duì) PHP 和 Smarty 確實(shí)很陌生,而且我不是一個(gè)偉大的思考者。任何幫助表示贊賞。
1 回答

倚天杖
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果發(fā)現(xiàn)匹配,您需要使用新變量并中斷循環(huán)。另外,條件 $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>
- 1 回答
- 0 關(guān)注
- 102 瀏覽
添加回答
舉報(bào)
0/150
提交
取消