如何在数据库中搜索特殊字符?

时间:2017-07-25 06:10:16

标签: php mysql utf-8

我有一个搜索,访问者可以搜索文章的标题。它一直很有效,直到他们试图搜索utf-8字符。

问题在于:您搜索“új”并从标题中获得包含“új”的结果,但不是“Új”。

在数据库中,我将uft-8字符存储为html实体,因此“új”看起来像:“ú j”和“Új”看起来像“Ú”。

我有一个函数,它将这些utf8字符转换为html实体。 E.g:

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

我想要做的是,如果有人搜索ú也显示Ú的结果,但因为它们是数据库中的不同字符(Ú和ú),因此strtolower(或mb_strtolower)不起作用,它只适用于普通字符,如E和e或U和u。

我该怎么办?将utf-8字符作为utf-8存储在数据库中会更好吗?

1 个答案:

答案 0 :(得分:0)

由于您希望此数据用于搜索优化,我会做的是:

  • 向数据库添加一个slug字段,其中包含tittle为小写的非UTF8。

  • 搜索时,使用该库将用户输入查询转换为相同的段塞

有关详细信息,您可以查看here,您需要编写一个迁移脚本,将所有已存在的标题转换为slug字符串,并将该列添加到数据库中,但这应该或多或少是微不足道的