PHP word border /b regex не работает с французским

Я пытаюсь сопоставить предложение "ça vous dit quoi" с шаблоном регулярных выражений:

$pattern=(\b".$value."\b)

Границы слова работают со всем, кроме французских эксклюзивных символов, таких как ç в начале ça. Я могу решить проблему границы слова, изменив локаль PHP таким образом:

setlocale(LC_ALL, 'fr_FR');

Когда я делаю это, оно успешно соответствует предложению, но все французские символы отображаются как, поэтому я получаю:

�a vous dit quoi

Вид раздражает. Решите одну проблему только для создания другой. У меня уже есть локаль html:

<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr" version="XHTML+RDFa 1.0" dir="ltr">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Не уверен, что еще нужно сделать, чтобы это исправить? Конечно, французский должен отображаться нормально со всеми локалями, установленными на французский...?

РЕДАКТИРОВАТЬ: Мой сервер показывает UTF-8 в качестве набора символов по умолчанию для локального и основного значения через phpinfo.

РЕДАКТИРОВАТЬ: Этот вопрос не похож на предложенный, потому что вопрос совсем не похож. Решение может быть таким же, но любой, кто ищет в Google проблему, которая у меня возникла, не найдет этот вопрос, но найдет мой. Я думаю, что люди начинают просто отмечать вопросы как дубликаты просто ради этого.

Этот вопрос также похож на мой в том же смысле, так как ответ тот же: регулярное выражение для французских символов, но это сделало бы все три вопроса дубликатами.

1 ответ

Решение

Кажется, это кошмар, чтобы исправить?? отображаться во французском языке, но я смог решить эту проблему другим способом, изменив шаблон регулярных выражений. Добавив "u" в качестве модификатора в паттер, он смог обнаружить французский символ ç в ça, и все работает правильно, без необходимости менять локаль.

Из этого:

$pattern=(\b".$value."\b)

к этому:

$pattern=(\b".$value."\b/u)
Другие вопросы по тегам