如何过滤任何特殊字符

时间:2011-08-14 14:12:41

标签: php

如果我有像这样的输入文本

<form action="add.php" method="post">
<input type="text" name="txt" id="txt">
<input type="submit" name="submit" value="Submit">
</form>

,add.php代码如下

$sql= "insert into mytable set myname='$txt'";
executeupdate($sql);

我的问题是如何过滤来自任何特殊字符的任何文字输入我只想要它Aa-Zz-1234567890(字母和数字)。

这是我的尝试,但我不确定它是否会真正过滤所有特殊字符或者可以传递任何

我在add.php中添加了以下代码

$cleared = strip_tags($txt);
$sql= "insert into mytable set myname='$cleared'";
executeupdate($sql);  // this should clear the name before insert

有任何其他建议或更好的方法吗?

4 个答案:

答案 0 :(得分:7)

$txt = preg_replace('/[^a-zA-Z0-9]/', '', $txt);

此外,对于A-Z,0-9范围之外的人物,没有任何“特殊”。

答案 1 :(得分:7)

 $whiteSpace = '\s';  //if you dnt even want to allow white-space set it to ''
$pattern = '/[^a-zA-Z0-9'  . $whiteSpace . ']/u';
 $cleared = preg_replace($pattern, '', (string) $txt);

答案 2 :(得分:4)

如果您只想删除所有非字母数字字符:

$new_str = preg_replace("/[^a-zA-Z0-9]/", "", $str);

答案 3 :(得分:3)

我会尝试以下方法:

<?php
    //Replace non-alphanumerics with an "" ie nothing
    $cleared = preg_replace("/[^a-z0-9]/i", "", $txt);
?>

希望这对你有用!