如何使用正则表达式“清理”PHP中的字符串?

时间:2011-05-17 10:18:59

标签: php regex

例如假设我有

$blah = "C$#@#.a534&";

我希望过滤字符串,以便只有字母,数字和“。”继续产生“C.a534”

我该怎么做?

5 个答案:

答案 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

用空字符串替换所有无效字符。