Я пытаюсь сопоставить целое слово UTF-8 в PHP. Вот как я пытаюсь это сделать:
<?php
$string = 'DS DAMAT TAKIM ELBİSE (GOLD)';
$search = 'takım elbise';
$replace = 'TakımElbise';
$result = mb_eregi_replace('/\b'.$search.'\b/ui', $replace, $string);
echo $result;
echo preg_match('/\b'.$search.'\b/ui', $replace);
?>
Но это не работает. В чем может быть проблема?
НОТА:
Я попытался добавить эти строки в начале скрипта:
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
Безрезультатно.
Как насчет:
$string = 'DS DAMAT TAKIM ELBİSE (GOLD)';
// ^__ this isn't an I
$search = 'takım elbİse';
// ^__ this isn't an I
$replace = 'TakımElbise';
$result = preg_replace("/\b$search\b/ui", $replace, $string);
echo $result;
Я просто изменил i
в İ
в строке поиска. Вы можете использовать нижний регистр (у меня нет на клавиатуре)
Смотрите комментарий здесь: http://php.net/manual/en/function.mb-ereg-replace.php
В отличие от preg_replace
, mb_ereg_replace
не использует разделители
Пример с preg_replace
:
$data = preg_replace("/[^A-Za-z0-9\.\-]/","",$data);
Пример с mb_ereg_replace
:
$data = mb_ereg_replace("[^A-Za-z0-9\.\-]","",$data);
Кроме того, не используйте флаги пользовательского интерфейса.