我不明白为什么此正则表达式不能与法语重音/标点符号一起使用。
<?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大街édéric-guillaumeraiffeisen 67000 frstrasbourg”
我想删除所有单独的“ fr”(或所有我可以列出为“ sarl”的首字母缩写),但是正则表达式也删除了“FRÉDÉRIC”中的fr,但没有删除“ frstrasbourg”中的fr和我不明白为什么?
有什么想法吗?
非常感谢!
答案 0 :(得分:2)
有两个问题:
u
修饰符使\b
完全了解Unicode $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
请注意,您可以在代码中使用正则表达式online进行调试之前对其进行测试。例如。没有u
修饰符matches Frederic
的版本,而有u
does not的版本。这是PHP available modifiers的列表。