2013-07-25 79 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