带有preg_replace的PHP过滤器只允许使用字母

时间:2011-08-14 20:33:48

标签: php regex

我对preg_replace有点问题。我需要一个将所有字符转换为除[A-z][0-9]和一些. ! ?

之外的任何字符的函数

我可以做preg_match,但这只是验证,我想要被替换。这不是为了放垃圾字符     <p>;[[;[p;[ 在描述META TAG。

所以脚本必须像:

;")<br>kk23?! => brkk23?!

任何帮助将不胜感激:D

5 个答案:

答案 0 :(得分:40)

$string = ';")<br>kk23?!'; 
$new_string = preg_replace("/[^A-Za-z0-9?!]/",'',$string);
echo $new_string;

留下字母,数字,空格,?!

/* 3 choices. Pick one you like! */
$str = preg_replace("/[^A-Za-z0-9?! ]/","",$str);
$str = preg_replace("/[^A-Za-z0-9?!\s]/","",$str);
$str = preg_replace("/[^A-Za-z0-9?![:space:]]/","",$str);

答案 1 :(得分:6)

 $var=preg_replace('~[^A-Za-z0-9?.!]~','',$var);

不要忘记A-Za-zA-z不相同

答案 2 :(得分:2)

快速解决方案如下:

if (preg_match('/^[\w\.]+$/', $str)) {
    echo 'Str is valid';
} else
    echo 'Str is invalid';

//字符串只包含a到z,A到Z,0到9和_(下划线)

\w - matches [a-zA-Z0-9_]+

希望它有所帮助。

答案 3 :(得分:1)

最简单的方法是做类似的事情: 只需在!之后添加字符,请确保在需要时将其转义。

$string = "<br>kk23?!";
$string = preg_replace('/[^A-Za-z0-9 \?!]/', '', $string);

答案 4 :(得分:0)

更多访问此页面。我想更多的人会遇到同样的问题。更好的方法是尝试自己并获得所需。自定义你的或复制粘贴这个PHP并尝试它:

$sample_input = '&&*9?><<script>}cat-<html>ch(_P.,,mE.:;xc##e*p32t.ion $e){di+-($e->ge69tMesPHP _f0sage()3);}';

$output = ereg_replace("[^..........]", "", $sample_input);        

echo "validate =".$output;

通过填写此内容来修改以获得您想要的内容:

 $output = ereg_replace("[^.........]", "", $sample_input);

示例:如果您只想要小写,请执行以下操作:

$output = ereg_replace("[^a-z]", $sample_input);

带有空格的小写:

 $output = ereg_replace("[^a-z ]", $sample_input);

等...... 这是一种简单的验证方法:

$username = ereg_replace("[^A-Z0-9_]", "", $username);
$fullname = ereg_replace("[^A-Za-z0-9., ]", "", $fullname);
$city     = ereg_replace("[^A-Za-z -]", "", $city);
$phone    = ereg_replace("[^0-9 +()-]", "", $phone);
$state    = ereg_replace("[^A-Za-z -]", "", $state);
$zipcode  = ereg_replace("[^0-9]", "", $zipcode);
$country  = ereg_replace("[^A-Za-z -]", "", $country);
$gender   = ereg_replace("[^mf]", "", $gender);

试试自己,希望会有所帮助...