我相信你想做的就是 UTF-8 规范化。
This post 解释了一些基础。试试这个:
php > $mystring = "từ khóa a,từ khóa b, từ khóa c";
php > $mykeyword = "tu khoa b";
php > var_dump(transliterator_transliterate('Any-Latin; Latin-ASCII; [\u0080-\u7fff] remove', $mystring));
string(30) "tu khoa a,tu khoa b, tu khoa c"
php >
现在,您可以使用普通的字符串操作函数来查看$mykeyword 是否包含在$mystring 中。请注意,没有 ASCII 翻译的字符将被删除。
请注意,要使其工作,您需要安装 PHP intl 模块(通常是一个名为 php5-intl 的包)。见here。
您还可以使用Normalizer 和preg_replace() 去除重音符号:
php > var_dump(preg_replace('/\p{Mn}/u', '', Normalizer::normalize($mystring, Normalizer::FORM_KD)));
string(30) "tu khoa a,tu khoa b, tu khoa c"
php >
还有一种方法是使用iconv():
php > var_dump(preg_replace('/[^a-zA-Z0-9 -]+/', '', iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $mystring)));
string(25) "t khoa at khoa b t khoa c"
但是,如您所见,ừ 没有正确翻译。