2012-11-11 38 views
0

我有一個php函數,它突出顯示已搜索的文本,它的工作原理,直到您開始用引號搜索,然後它添加斜線,但通過這樣做,它停止它與斜線後面的字符串的其餘部分相匹配。php preg_replace添加引號並在報價後不匹配

例如:

我想要它做的事情:

搜索條件:Ronnie's h

結果:羅尼之H

實際結果:

羅尼 'sh

function highlight($needle, $haystack) 
{ 
    $result = preg_replace("/(".preg_quote($needle, "/").")/i", "<strong>$1</strong>", $haystack); 
    return $result; 
} 


echo highlight("ronnie's h", "ronnie's home"); 
+0

這似乎是工作的罰款http://codepad.org/vooGfwzg – air4x

+0

請與'<強烈風格= 「COLOR:#800;」>'。也許'h'在瀏覽器中沒有明顯的粗體。 – air4x

+0

是的,即使是做顏色的事情,在搜索中放置一個'''後,沒有任何文本會變成粗體。但我無法弄清楚爲什麼它在鍵盤上爲你工作。 :\ –

回答

0

你爲什麼要使用preg_replace這個?它會更容易爲:

function highlight($needle,$haystack) { 
    return str_replace($needle,"<strong>".$needle."</strong>",$haystack); 
} 
+0

謝謝,還有兩件事,首先,當我這樣做時,我遇到的問題仍然存在,其次,這是一個區分大小寫的問題。 –

+0

啊,是的,案例。這就是爲什麼。好吧,我不知道爲什麼問題仍然會發生 - 讓我們試着在擔心情況之前先解決問題。你可以嘗試查看源代碼並查看生成的HTML是什麼? –