2012-07-12 114 views
0

這是一個網站搜索腳本。如果我使用str_ireplace,則會改變搜索結果的大小寫。例如,如果查詢字符串是「搜索字符串」,並且找到包含「搜索字符串」的記錄,則後者將丟失其大小寫。任何方式在這個?如何在不改變大小寫的情況下使用str_replace?

我需要合併搜索結果的突出顯示。

問題是找不到字符串或突出顯示。我可以使用str_ireplace來實現這一點。但是這會失去大寫。我想要的是保持大寫字母不變。

+1

爲什麼在不希望字符串被修改時使用字符串替換函數?使用一個函數,像'stripos'一樣在字符串內搜索,而不是用來修改數據的函數。或者,發佈你正在使用的代碼,以便我們可以看到到底發生了什麼問題。 – Jazz 2012-07-12 21:46:07

+0

這是一個搜索腳本,突出顯示搜索結果中出現的用戶提交的單詞。對於str_replace,它沒有突出顯示由於大寫而出現的每個單詞,但對於str_ireplace,它突出顯示了所有單詞,但是它們丟失了所有的大寫字母。也許preg_match會更好。 – reformed 2012-07-12 21:54:00

回答

1

您可以使用preg_replace

$haystack = 'Some text here.'; 
$str = preg_replace("#(.*)(text)(.*)#i", '\1<b>\2</b>\3', $haystack); 
+0

這工作,謝謝。 – reformed 2012-07-12 22:04:04

0

代替使用stripos進行搜索。

if (stripos($haystack, $needle) !== false) 
    echo $needle, ' found!'; 
+0

我將需要搜索結果的突出顯示功能。 – reformed 2012-07-12 21:45:12

+1

然後使用preg_replace。 – m02ph3u5 2012-07-12 21:46:41

0

只需使用str_replace而不是str_ireplace。

+0

是的,但然後「搜索字符串」不會拿起「搜索字符串」或「搜索字符串」 – reformed 2012-07-12 21:44:43

+1

嘗試使用preg_replace與'我'修飾符。 – 2012-07-12 21:48:30