Что вы хотите сделать, так называется UTF-8 Normalization.
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"
Однако, как вы можете видеть, ừ
не правильно перевести.
Вы можете попробовать этот ответ здесь http://stackoverflow.com/questions/1008802/converting-symbols-accent-letters-to-english-alphabet –