PHP-过滤变量替代方案?

PHP-过滤变量替代方案?,php,sanitize,filter-var,Php,Sanitize,Filter Var,我构建了一个php脚本来输出表单中发布的数据,但遇到了一个问题。网站将要运行的服务器运行PHP5.1.6。此版本的PHP不支持filter_var 我需要知道一个短期的替代方案(最好是昨天),但在Google或Stack Overflow上找不到直接的东西 也许有人在这里遇到了同样的问题,在过去和我有一个快速修复 此代码: $email= filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); $answer= filter_var($_POST[

我构建了一个php脚本来输出表单中发布的数据,但遇到了一个问题。网站将要运行的服务器运行PHP5.1.6。此版本的PHP不支持filter_var

我需要知道一个短期的替代方案(最好是昨天),但在Google或Stack Overflow上找不到直接的东西

也许有人在这里遇到了同样的问题,在过去和我有一个快速修复

此代码:

$email= filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$answer= filter_var($_POST['answer'], FILTER_SANITIZE_STRING);
需要与PHP 5.1.6兼容,以便在Genuity上检查电子邮件地址,并且两个字段中均未使用恶意代码。有什么建议吗


非常感谢

您可以通过PECL将扩展安装到PHP 5.1:

对于电子邮件,您可以使用正则表达式:(例如:)

对于字符串,您也可以使用正则表达式,但这有点太重了,因此如果将其发送到DB,可能需要结合使用
mysql\u real\u escape\u string()
,对于html,您应该使用
htmlentities()


我不认为filter_var-function与仅仅使用这些方法有什么不同,我通常会使用正则表达式。它为您提供了最大的灵活性。互联网上有许多关于它的有用资源。请看一看或使用前面答案中提供的信息,下面是我如何解决问题的:

<?PHP // Retreive POST data and sanitize it: trim string, no HTML, plain text
$variable1=htmlentities(trim($_POST['input1']), ENT_NOQUOTES);
$variable2=htmlentities(trim($_POST['input2']), ENT_NOQUOTES);
$emailaddress=$_POST['email']; // sanitizing email address happens below

if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $emailadres)){    // check email address and if legit, do this:
        echo '<p>The e-mail address given is valid.</p>'

} else{ // if email is not legit, do this:
        echo '<p>The e-mail address given is not valid.</p>';
}
?>


我希望这对某人有所帮助:)

使用正则表达式而不是过滤器。\u var是唯一的选择。对于简单的文本替换来说,regex有点重。考虑为此定义的函数:MySqLRealOracle SurvieStruts()、HTMLTimeTes()、AddiSaleSe(),如果他不能更新到最近的PHP版本,他就不能安装PHP扩展(因为您总是需要更深入地访问服务器……),EgReCordDS是正确的。不过,感谢您的投入。:)谢谢,我的唱片。我将使用您给出的示例来处理电子邮件,使用htmlentities来处理字符串。如果其他人将来也有同样的问题,这里有一个很好的开端来帮助您解决htmlentities:…这真的应该被打勾=)