2013-07-25 134 views
2

Hlo ...Diacritic敏感搜索PHP

我一直在做一個旁遮普語拼寫檢查器。一切工作都很好,除了旁遮普語的變音符號。與eé一樣,旁遮普語也具有ਸ਼的變音符號。但問題是,當我在數據庫中搜索時,它認爲與ਸ਼相同的單詞。數據庫以utf-8格式存儲。我正在使用數據庫和表格的排序規則utf8_unicode_ci

mysql_query("SET charset utf8"); 
$exists = mysql_query("SELECT COUNT(word) FROM unicode WHERE word = '$str'"); 

如果計數爲0,則表示該單詞錯誤。 $str是這個詞。當我嘗試搜索時,它說ਸ਼正確。與ਸ਼這個詞是正確的。

我試圖改變排序規則utf8_binCOLLATE utf8_bin,但它說這兩個詞錯誤ਸ਼。我甚至試過utf8_general_ci並更改表和數據庫的排序規則。

它或者說不正確,或者兩者都正確。但其中一個是正確的。

我的主要問題是區分符號敏感的搜索不提前與utf8_bin要麼...

Plzz Help..Thxx工作....

+0

你的'示例'不適合我。這兩個查詢「選擇''''COLLATE utf8_bin;#'給出0'和'選擇'ਸ'''COLLATE utf8_unicode_ci;#給出0」似乎是正確的。你能舉出一個實際的例子和你看到的結果嗎? – Danack

+0

從'mysql_'開始的PHP函數從PHP 5.5.0開始已被棄用。如果您有能力這樣做,請考慮更新您的代碼以使用[MySQLi](http://www.php.net/manual/en/book.mysqli.php)或[PDO](http:///www.php.net/manual/en/ref.pdo-mysql.php)擴展。 –

回答

2
SELECT COUNT(word) FROM unicode WHERE BINARY word = '$str' 

BINARY關鍵字導致MySQL做一個直接的比較。

+0

現在它又把這兩個字都說錯了...... – shahbaz

+0

對不起,我不知道! –

+0

沒問題... :) – shahbaz