首页 文章

Preg_replace非字母数字和特殊字符

提问于
浏览
2

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

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

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

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

例:

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

1 回答

  • 3

    你想使用u (unicode) modifier .

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

相关问题