php preg_replace 除字母数字、space 和重音字母外的所有字母

php preg_replace all but alphanumeric, space and accented letters

我想从字符串中去除所有字符,除了:字母数字字符、空格和重音字母。

除了带重音的字母外,我让它适用于所有内容:

$fname = preg_replace("/[^\w\space/", "", $fname);

我需要更改什么才能在输出中允许重音字母?

当我在苦苦挣扎的时候,我自己找到了答案,所以我决定与你分享:

$fname = preg_replace("/[^\w\space\pL]/", "", $fname);

"pL" 部分匹配 Unicode 字母类别中的任何内容,因此输出中允许带重音的字母。

请使用这个:

$fname = preg_replace("/[^ \w]+/", "", $fname);

我找到了解决方案。

重音字母

$str = 'paulraâj píc - accountant and knows Bilingüe';

删除重音字母

echo '<br>' .preg_replace('/[^a-zA-Z0-9_ -]/s', '', $str);

结果:paulraj pc - 会计并且知道 Bilinge
哇效果很好
谢谢