2013-05-30 146 views
1

我試圖在字符串的第一個實例前刪除字符串中每個單詞的所有實例。加粗字符串中每個單詞的每個實例

我正在使用str_replace()stristr()來執行此操作,但輸出結果不符合預期。單詞第一個實例之前的所有內容都會被切斷,但是當我回顯該字符串時,該單詞的實例不是粗體。

這裏是我的代碼:

$word="the"; 
$sentence = "Hello, did you hear the quick brown fox jumped over the lazy dog"; 
$edited = stristr((str_replace($word, ("<span class=\"found\">".$word."</span>"), ($sentence))), $word); 
echo $edited; 

以及類的CSS,使其大膽:

.found{ 
    font-weight:bold; 
    font-weight:700; 
} 

我想是這樣的:

快棕色狐狸跳懶狗

<span class="found">the</span> quick brown fox jumped over <span class="found">the</span> lazy dog 

迴盪時。

但是我所得到的是這樣的:

敏捷的棕色狐狸懶狗跳下

the quick brown fox jumped over the lazy dog 

呼應時。

我在做什麼錯?

回答

3
$edited = stristr($sentence, $word); 
$edited = str_ireplace($word, '<span class="found">'.$word.'</span>', $edited); 

Demo


或者更好的是(保留原始情況下,只有加粗整個$word S):

$edited = stristr($sentence, $word); 
$edited = preg_replace('~\b(' . preg_quote($word, '~') . ')\b~i', '<span class="found">$1</span>', $edited); 

Another demo

+0

我嘗試使用你的邏輯顛倒函數的順序,但由於某些原因,這是行不通的。任何想法爲什麼? '$ queryReplace =「」。$ query。「」; $ descriptionContent = $ elasticaResult-> content; $ foundQuery = stristr($ descriptionContent,$ query); $ queryInDescription = str_replace($ query,$ queryReplace,$ foundQuery); echo $ queryInDescription;' –

+0

@irfanmir:'var_dump($ elasticaResult);' –

+0

這是什麼意思?你想讓我在代碼中使用var_dump(),爲什麼? –

相關問題