PHP Preg_replace与法语标点符号/重音不匹配



我不明白为什么这条正则不适用于法语口音/标点符号。

 <?PHP
$search=array( '/bfrb/', '/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;
?>

此正则返回" Caissefr Federale de Credit Mutuel 4 RueÉdéric-Guillaume raiffeisen 67000 frstrasbourg"

我想删除一个单独的" fr"(或我可以列为" s.a.r.l."的所有首字母缩写词),但是,以下等级也使我删除了"frédéric"中的fr我不明白为什么?

有什么想法吗?

非常感谢!

有两个问题:

  • 使用u修饰符使b完全Unicode Aware
  • 逃脱所有字面点的点

PHP演示:

$search=array( '/bfrb/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中可用修饰符的列表。

最新更新