如何删除非字母数字字符?
我需要从一个string中删除所有字符不在az AZ 0-9
设置或不是空格。
有没有人有这样做的function?
听起来你几乎已经知道你想要做什么,你基本上定义为一个正则expression式。
preg_replace("/[^A-Za-z0-9 ]/", '', $string);
对于unicode字符,它是:
preg_replace("/[^[:alnum:][:space:]]/u", '', $string);
正则expression式就是你的答案。
$str = preg_replace('/[^az\d ]/i', '', $str);
-
i
代表不区分大小写。 -
^
意味着,不开始。 -
\d
匹配任何数字。 -
az
匹配a
和z
之间a
所有字符。 由于i
参数,您不必指定az
和AZ
。 -
\d
有一个空格,所以在这个正则expression式中允许有空格。
这是一个非常简单的正则expression式:
\W|_
并根据需要使用它(带有正斜杠/
斜线分隔符)。
preg_replace("/\W|_/", '', $string);
在这里用这个伟大的工具来testing它,解释了正则expression式在做什么:
我也在寻找答案,我的意图是清理每一个非alpha,不应该有一个以上的空间。
所以,我修改了Alex的答案,这对我来说是preg_replace('/[^az|\s+]+/i', ' ', $name)
上面的正则expression式把sy8ed sirajul7_islam
了sy ed sirajul islam
说明:正则expression式将不 区分大小写的方式或多个空格,从a到z 不勾选,它会被转换为一个空格。
preg_replace("/\W+/", '', $string)
你可以在这里testing它: http : //regexr.com/
[\W_]+
$string = preg_replace("/[\W_]+/u", '', $string);
它select所有不是AZ,az,0-9并删除它。
请看这里的例子: https : //regexr.com/3h1rj
我使用这个:
//to remove non english character $str = preg_replace('/[^\00-\255]+/u', '', $str);