我需要从一个字符串中删除所有不是在a-z a-z 0-9集或不是空格的字符。
有人有函数来做这个吗?
我需要从一个字符串中删除所有不是在a-z a-z 0-9集或不是空格的字符。
有人有函数来做这个吗?
当前回答
正则表达式就是你的答案。
$str = preg_replace('/[^a-z\d ]/i', '', $str);
i代表不区分大小写。 ^表示,不以…开始。 \d匹配任何数字。 a-z匹配a和z之间的所有字符。由于i参数,您不必指定a-z和a-z。 \d后面有一个空格,所以这个正则表达式中允许空格。
其他回答
听起来好像你已经知道你想做什么了,你基本上把它定义为一个正则表达式。
preg_replace("/[^A-Za-z0-9 ]/", '', $string);
正则表达式就是你的答案。
$str = preg_replace('/[^a-z\d ]/i', '', $str);
i代表不区分大小写。 ^表示,不以…开始。 \d匹配任何数字。 a-z匹配a和z之间的所有字符。由于i参数,您不必指定a-z和a-z。 \d后面有一个空格,所以这个正则表达式中允许空格。
对于unicode字符,它是:
preg_replace("/[^[:alnum:][:space:]]/u", '', $string);
preg_replace("/\W+/", '', $string)
你可以在这里测试:http://regexr.com/
这里有一个非常简单的正则表达式:
\W|_
并在需要时使用(使用正/斜杠分隔符)。
preg_replace("/\W|_/", '', $string);
在这里用这个伟大的工具测试它,它解释了正则表达式在做什么:
http://www.regexr.com/