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)