регулярное выражение — PHP mb_eregi_replace не работает

Я пытаюсь сопоставить целое слово 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');

Безрезультатно.

1

Решение

Как насчет:

$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 в İ в строке поиска. Вы можете использовать нижний регистр (у меня нет на клавиатуре)

0

Другие решения

Смотрите комментарий здесь: 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);

Кроме того, не используйте флаги пользовательского интерфейса.

0

По вопросам рекламы [email protected]