正则表达式删除特殊字符并保留重音和()@ -_'&字符

时间:2014-02-17 10:38:28

标签: php regex replace preg-replace str-replace

在我目前的PHP代码中,我对特殊字符有很多问题,我想用正则表达式替换它们。你知道我怎么做的吗?

我想接受:

所有带重音的字母 所有数字 ()@ -_'&安培;

我的正则表达式:

preg_replace('/[^\p{L}0-9\-]/u', '', $string);

这就是全部。这个正则表达式是制作一个干净的标题来下载文件。

谢谢大家的帮助。 最好的问候,

2 个答案:

答案 0 :(得分:2)

您可以在角色类中包含允许的字符:

$replaced = preg_replace("/[^\p{L}0-9()@_'&-]+/u", '', $string);

此外,最好在此处使用量词+以使替换过程更有效,因为在每次调用中将匹配并替换多个字符。

答案 1 :(得分:2)

当您使用\pL字母时,可以使用\pN代码:

preg_replace("/[^\p{L}\p{N}()@_'&-]+/u", '', $string);