2017-07-25 131 views
-1

我有一個搜索,遊客可以搜索一篇文章的標題。直到他們嘗試搜索utf-8字符時它才工作得很好。如何搜索數據庫中的特殊字符?

問題出在這裏:您搜索「új」,您會從包含「új」但不包含「Új」的標題獲得結果。在數據庫中,我將uft-8字符存儲爲html實體,因此「új」看起來像:「ú j」和「Új」看起來像「Ú」。

我有一個函數,它將這些utf8字符轉換爲html實體。 如:

$text = str_replace("Ú","Ú",$text); 
$text = str_replace("ú","ú",$text); 

我想要做的是,如果有人搜索ú還顯示Ú的結果,而是因爲他們在數據庫中不同的字符(Ú和ú),因此, strtolower(或mb_strtolower)不起作用,它只適用於像E和e或U和u這樣的普通字符。

我該怎麼辦?在數據庫中存儲UTF-8字符爲utf-8會更好嗎?

+0

使用正則表達式來查找特殊字符 –

+0

在你的數據庫可以存儲實際的HTML價值,使另一列,致力於搜索 但似乎對我來說,UTF8-unicode編碼提供的是:,我不知道 – Snoozer

+0

我們不應該修復「我有存儲爲html實體的uft-8字符」嗎? –

回答

0

既然你想這個數據爲搜索優化的目的是什麼我會做的是:

  • 蛞蝓字段添加到數據庫中,包含絲毫不差的小寫非UTF8。

  • 當使用該庫

欲瞭解更多信息,你可以看看here你需要編寫一個遷移腳本將所有已有的標題轉換搜索CONVER用戶輸入查詢到相同的蛞蝓去掉字符串並將該列添加到數據庫中,但這應該是或多或少的微不足道。

+1

謝謝。我已經有了這樣的網址,但我從來沒有想過使用它進行搜索。 – Joey