preg_replace соответствует целому слову на арабском языке

Я пытаюсь сделать

$text = preg_replace('/\bمرحبا بك\b/', 'NEW', $text);

но это не работает, я думаю, что эта функция не поддерживает арабский

http://php.net/manual/en/function.preg-replace.php

3 ответа

Если ваш текст в кодировке UTF-8, добавьте модификатор 'u' к шаблону регулярных выражений для поддержки Unicode.

$text = preg_replace('/\bمرحبا بك\b/u', 'NEW', $text);

Не добавлять \b в конце вашего регулярного выражения. Соответствие должно работать нормально, когда вы изменяете свой код на это:

 $text = preg_replace('/\bمرحبا بك/', 'NEW', $text);

Вы не можете использовать \b в конце, так как в слове (ах) есть пробел, который вы пытаетесь найти. \b ничего не подходит, если в той части, которую вы пытаетесь найти, нет несимвольного символа.

Просто возьми str_replace. Нет необходимости в регулярных выражениях.

$text = 'hello bمرحبا بك world';
echo str_replace('bمرحبا بك', 'NEW', $text);
Другие вопросы по тегам