PHP过滤器使用preg_replace,只允许字母数字和一些标点符号


PHP filter using preg_replace to allow only alphanumerics and some punctuation

我的preg_replace有点小问题。

我需要一个函数,删除除[A-z][0-9].!?以外的所有字符。

我可以使用preg_match,但这只验证字符串,我想删除字符。

这样我就不会把垃圾字符像<p>;[[;[p;[

所以函数必须这样做:

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

D
$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);
 $var=preg_replace('~[^A-Za-z0-9?.!]~','',$var);

别忘了A-Za-zA-z是不一样的

最简单的方法是做类似的事情:只需在!后面添加字符,如果需要,请确保转义它们。

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

一个快速的解决方案也可以如下:

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_]+

希望能有所帮助。

更多访问此页面。我认为越来越多的人遇到了同样的问题。更好的方法是尝试你自己,得到你需要的。自定义您的或复制粘贴这个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);