我正在尝试使用preg_replace删除字符串中超出指定白名单的任何字符。白名单应包含所有字母数字和常用标点符号,以及空格和以下内容:²°°©½¼¾®™
我尝试使用以下内容来完成此任务:
preg_replace("/[^[:alnum:][:punct:] ²¹º°©½¼¾®™]/","", $string);
但是,这会删除非法字符后面的字符串上的所有内容,而不是仅删除非法字符。如果我只使用alnum,punct和space字符,它可以正常工作,所以我认为问题在于最后的特殊字符 - 但是我无法弄清楚如何正确地包含它们。
示例:
“测试测试₣测试测试”成为“测试测试”,但我希望它成为“测试测试测试”答案 0 :(得分:3)
您想使用u
(unicode) modifier。
$str = preg_replace('/[^[:alnum:][:punct:] ²¹º°©½¼¾®™]/u', '', $str);