如何以多字节安全的方式从字符串中删除字符,如标点符号,逗号,短划线等?
我将处理来自许多不同语言的输入,我想知道是否有什么可以帮助我解决这个问题
由于
答案 0 :(得分:24)
您可以使用unicode字符类thingys:
要匹配任何非字母符号,您只能使用\PL+
,否定\p{L}
。要不删除空格,请使用类似[^\pL\s]+
的charclass。或者只是使用\pP+
好吧,显然不要忘记正则表达式/u
修饰符。
答案 1 :(得分:1)
我用过这个:
$clean = preg_replace( "/[^\p{L}|\p{N}]+/u", " ", $raw );
$clean = preg_replace( "/[\p{Z}]{2,}/u", " ", $clean );
答案 2 :(得分:0)
类似的帖子
Remove non-utf8 characters from string
我不确定这是否涵盖了所有角色。
根据Dreamincode论坛上的这篇文章
http://www.dreamincode.net/forums/topic/78179-regular-expression-to-remove-non-ascii-characters/
这应该有效
/[^\x{21}-\x{7E}\s\t\n\r]/
答案 3 :(得分:-1)
也许这会有用吗?
$newstring = preg_replace('/[^0-9a-zA-Z\s]/', $oldstring);