除了有效字符以外,删除所有其他字符

13

有效字符包括字母(abcd..)、数字(0123456789)、空格、' 和 "。

我需要在 PHP 中从字符串中除去这些字符以外的任何其他字符。

谢谢 :)

2个回答

31

您可以这样做:

$str = preg_replace('/[^a-z0-9 "\']/', '', $str);

这里的字符类 [^a-z0-9 "'] 将会匹配除了列出的字符(注意在字符类开头的反转符号 ^)以外的任何字符,然后用空字符串替换。


你不需要将正则表达式设为:/[^a-z0-9 "\']/g 来匹配所有这些字符的出现吗?(而不仅仅是第一个) - Razor Storm
RazorStorm,你把preg_replace和preg_match以及preg_match_all混淆了。请参考:http://www.php.net/manual/en/function.preg-replace.php --“每个主题字符串中每个模式的最大可能替换。默认为-1(无限制)。” - rubber boots
哦,我明白了,哈哈,最近做太多的 Perl 了。:P - Razor Storm

2

Gumbo的回答对于您给出的规格是正确的。但是,如果您的“规格”仅仅是“符号性的”,那么您最终需要的可能会像下面这样:

$str = preg_replace('{ [^ \w \s \' " ] }x', '', $str );

[^ ]: 否定字符类(除了这些内部的所有字符)

\w: 字母数字(字母和数字)

\s: 空白字符

\': '


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接