2017-07-25 132 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