我不明白为什么这条正则不适用于法语口音/标点符号。
<?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中可用修饰符的列表。