Preg_replace非字母数字和特殊字符

时间:2015-02-28 00:41:34

标签: php regex

我正在尝试使用preg_replace删除字符串中超出指定白名单的任何字符。白名单应包含所有字母数字和常用标点符号,以及空格和以下内容:²°°©½¼¾®™

我尝试使用以下内容来完成此任务:

preg_replace("/[^[:alnum:][:punct:] ²¹º°©½¼¾®™]/","", $string);

但是,这会删除非法字符后面的字符串上的所有内容,而不是仅删除非法字符。如果我只使用alnum,punct和space字符,它可以正常工作,所以我认为问题在于最后的特殊字符 - 但是我无法弄清楚如何正确地包含它们。

示例:

“测试测试₣测试测试”成为“测试测试”,但我希望它成为“测试测试测试”

1 个答案:

答案 0 :(得分:3)

您想使用u (unicode) modifier

$str = preg_replace('/[^[:alnum:][:punct:] ²¹º°©½¼¾®™]/u', '', $str);