Вопрос

Этот пример работает нормально:

echo preg_replace("/\bI\b/u", 'we', "I can"); // we can

Это были русские буквы, используются не работают, даже если я использую модификатор «U»:

echo preg_replace("/\bЯ\b/u", 'мы', 'Я могу'); // still "Я могу"

Так что вопрос в том, что я должен сделать, чтобы это исправить?
Спасибо.

Это было полезно?

Решение

В PCRE (библиотека, используемая preg_replace), \b относится только к границам слов в смысле ASCII, то есть только [a-zA-Z0-9_] являются символами слова.

Если вы хотите подобрать Я персонаж, который не имеет букв, цифр или _ Непосредственно перед или после, вы можете использовать:

(?<![\p{L}0-9_])Я(?![\p{L}0-9_])

Вы все еще должны использовать u модификатор.

Другие советы

Границы слова часто противообитный.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top