例如假设我有
$blah = "C$#@#.a534&";
我希望过滤字符串,以便只有字母,数字和“。”继续产生“C.a534”
我该怎么做?
答案 0 :(得分:10)
如果您知道应该允许哪些字符,您可以使用否定字符组(在正则表达式中)删除其他所有字符:
$blah = preg_replace('/[^a-z0-9\.]/i', '', $blah);
请注意,我正在使用i
修饰符作为正则表达式。它匹配不区分大小写,因此我们无需指定a-z
和 A-Z
。
答案 1 :(得分:4)
已经回答了很多次,但是:
function cleanit($input){
return preg_replace('/[^a-zA-Z0-9.]/s', '', $input);
}
$blah = cleanit("C$#@#.a534&");
答案 2 :(得分:2)
您可以使用preg_replace
$text = preg_replace('/[' . preg_quote('CHARSYOUDONTWANT','/') . ']/','',$text);
在其他情况下只为你想要的字符试试这个,
$text = preg_replace('/[^' . preg_quote('CHARSONLYYOUWANT','/') . ']/','',$text);
例如
$blah = "C$#@#.a534&";
$blah = preg_replace('/[' . preg_quote('$#@&','/') . ']/','',$blah);
echo $blah;
答案 3 :(得分:1)
或者反之亦然:
$text = preg_replace('/[^a-zA-Z0-9.]/','',$text);
答案 4 :(得分:0)
http://php.net/manual/en/function.preg-replace.php
用空字符串替换所有无效字符。