我知道这应该从字符串中删除任何字符,并且只保留数字和英文字母。
$txtafter = preg_replace("/[^a-zA-Z 0-9]+/","",$txtbefore);
但我希望删除任何特殊字符,并保留任何语言的字母,如阿拉伯语或日语。
答案 0 :(得分:4)
这可能适合你:
$repl = preg_replace('/[^\w\s]+/u','' ,$txtbefore);
这将删除文本中的所有非单词和非空格字符。 /u
标志用于unicode支持。
答案 1 :(得分:1)
您可以使用\p{L}
模式将任何字母和\p{N}
匹配到任何数字字符。您还应该使用u
修饰符:/\p{L}+/u
您的最终正则表达式可能如下:/[^\p{L}\p{N}]/u
另外请务必查看以下问题: