我正在嘗試編寫搜索和語法突出顯示。假設我們有一個基本查詢,即基於關鍵字查詢各個國家/地區,例如uni。語法突出顯示,不區分大小寫的語法
現在,我正在使用Sphinx從數據庫中獲取與此關鍵字匹配的結果,並且使用不區分大小寫的搜索。結果,那個獅身人面像的回報如下:
Tanzania, United Republic of
United Arab Emirates
United Kingdom
United States
Igaunija
Estados unidos Mexicanos
我現在想強調這些字符串搜索關鍵詞,通過在<span>
包裝的關鍵字。
要做到這一點,我試圖做到以下幾點:
$search='uni';
foreach($keyword as $text) { // $keyword is an array, containg each found result one by one
$text=str_replace($search, "<span>".$search."</span>", $text);
}
白衣這個代碼,只有Iguanija
和Estados unidos Mexicanos
得到強調,因爲在所有其他情況下,關鍵字以大寫字母開頭。如果我將str_replace
更改爲str_ireplace
,則每個搜索關鍵字get都會突出顯示,但在前幾個條目中,大寫U
被替換爲小寫u
,因此從United Kingdom
開始,我得到united Kingdom
。我怎樣才能突出顯示搜索關鍵字,並維護結果中的字符大小寫?
我期望的結果會是這樣的:
Tanzania, <span>Uni</span>ted Republic of
<span>Uni</span>ted Arab Emirates
<span>Uni</span>ted Kingdom
<span>Uni</span>ted States
Iga<span>uni</span>ja
Estados <span>uni</span>dos Mexicanos
什麼'$ search'的內容? '$ keyword'的內容是什麼?你爲什麼要將'$ keyword'複製到'$ text'中? –
$ search是** uni **,並且$關鍵字是從找到的單詞列表中按順序排列的每個單詞。 –
使用'preg_replace()'。然後,您可以使用替換中的$ 0來從原始文本中獲取文本,以便保留大小寫。 – Barmar