2015-07-12 2 views
1

Мой язык вьетнамский, поэтому у меня возникла проблема с получением точного слова из соответствующего ключевого слова. У меня есть одна строка и одно ключевое слово:Как получить слово в строке с соответствующим ключевым словом?

$mystring = "từ khóa a,từ khóa b, từ khóa c"; 
$mykeyword = "tu khoa b"; 

Как я могу использовать, чтобы получить $mykeywordtừ khóa b от $mystring?

Спасибо!

+1

Вы можете попробовать этот ответ здесь http://stackoverflow.com/questions/1008802/converting-symbols-accent-letters-to-english-alphabet –

ответ

1

Что вы хотите сделать, так называется 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" 

Однако, как вы можете видеть, не правильно перевести.

+0

Почему я вижу _ "** Фатальная ошибка ** : Вызов неопределенной функции transliterator_transliterate() в ** C: \ xampp \ htdocs \ ... \ index.php ** в строке ** 5 ** "_ при тестировании? – 5ervant

+0

Поскольку вам нужен модуль 'intl' :) См. [Здесь] (https://stackoverflow.com/questions/23431788/how-to-install-intl-php-extension-with-wamp-server) для того, как включить это на WAMP. – Will

+0

Считаете ли вы, что модуль уже установлен на большинстве общедоступных веб-хостов? – 5ervant

Смежные вопросы