如何从字符串中过滤非字母数字字符,但保持重音不变?示例:
$string = "présentation d'un texte, avec des accents (en français!) & autres..."
应替换为:
$string = "présentation dun texte avec des accents en français autres"
答案 0 :(得分:4)
你可以试试这个正则表达式:
$str = "présentation d'un texte, avec des accents (en français!) & autres...";
echo preg_replace('/[^\p{L}\s\p{N}]+/u', '', $str);
//=> présentation dun texte avec des accents en français autres
字符类[^\p{L}\s\p{N}]+
表示匹配1个或多个字符不:
/u
标志用于匹配unicode字母。
答案 1 :(得分:3)
$string = "présentation d'un texte, avec des accents (en français!) & autres...";
echo preg_replace('%[^\p{L}\s\p{N}]++%u', '', $string);
输出:
présentation dun texte avec des accents en français autres
说明:
\p{L}
- 所有字母字符\p{N}
- 所有数字u
- 将模式字符串视为UTF-8 正则表达式说:用任何东西(''
)替换不是字母字符或数字或空格字符的所有内容。
答案 2 :(得分:1)
使用PHP版本5.4.20和PHP版本5.2.3-20070601进行测试
<?php
$text = "présentation d'un texte, avec des accents (en français!) & autres...";
$new = preg_replace("/[^a-zA-ZÀ-ÿ ]/", '', $text);
echo $new;
?>
将产生présentation dun texte avec des accents en français autres
根据发布:d
和un
présentation dun texte avec des accents en français autres