PHP Preg_replace не совпадает с французской пунктуацией / ударением - PullRequest
2 голосов
/ 15 марта 2019

Я не понимаю, почему это регулярное выражение не работает с французским акцентом / пунктуацией.

 <?PHP
$search=array( '/\bfr\b/', '/\bs.a./', '/\bs.a.r.l./');
$replace=array('');
$nom="fr caissefr federale de credit s.A. mutuel 4 rue frédéric-guillaume raiffeisen 67000 frstrasbourg fr ";
$nom=strtolower($nom);
$nom=preg_replace($search, $replace, $nom);
echo $nom;
?>

Это возвращение регулярного выражения "Федеральное кредитное соглашение, 4-я улица, Гийом Райффайзен, 67000, Франция"

Я хочу удалить все "fr", которые одни (или все аббревиатуры, которые я могу перечислить как "sarl"), но регулярное выражение также удаляет меня как fr в "FRÉDÉRIC", но не как fr de "frstrasbourg" и я не понимаю почему ??

Есть идеи?

Большое спасибо!

1 Ответ

2 голосов
/ 15 марта 2019

Есть две проблемы:

  • Используйте модификатор u, чтобы \b полностью знал Unicode
  • Избегайте всех точек, которые являются буквальными точками

PHP демо :

$search=array( '/\bfr\b/u', '/\bs\.a\./u', '/\bs\.a\.r\.l\./u');
$replace=array('');
$nom="fr caissefr federale de credit s.A. mutuel 4 rue frédéric-guillaume raiffeisen 67000 frstrasbourg fr ";
$nom=strtolower($nom);
$nom=preg_replace($search, $replace, $nom);
echo $nom;
// => caissefr federale de credit  mutuel 4 rue frédéric-guillaume raiffeisen 67000 frstrasbourg  

Обратите внимание, что вы можете проверить свои регулярные выражения онлайн , прежде чем использовать их в своем коде для их отладки. Например. версия без u модификатор соответствует Frederic, в то время как версия с u не . Вот список доступных модификаторов в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...