最新的Web开发教程
 

PHP过滤器


验证数据=确定是否该数据是以适当的形式。

消毒数据=从数据中删除任何非法字符。


PHP的过滤器扩展

PHP过滤器用于验证和消毒外部输入。

PHP的过滤器扩展有很多需要检查用户输入的功能,旨在使数据验证更容易和更快。

filter_list()函数可用于列出PHP的过滤器扩展提供了什么:

<table>
  <tr>
    <td>Filter Name</td>
    <td>Filter ID</td>
  </tr>
  <?php
  foreach (filter_list() as $id =>$filter) {
      echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
  }
  ?>
</table>
运行示例»

为什么使用过滤器?

许多Web应用程序接收外部输入。 外部输入/数据可以是:

  • 从一种形式的用户输入
  • Cookies
  • Web服务数据
  • 服务器变量
  • 数据库查询结果

你应该总是验证外部数据!
无效提交的数据可能会导致安全问题,打破你的网页!
通过使用PHP的过滤器,你可以确保您的应用程序获得正确的输入!


PHP filter_var()函数

所述filter_var()函数既验证和消毒的数据。

所述filter_var()函数滤波器具有指定过滤器的单个可变。 这需要两个数据:

  • 要检查变量
  • 类型检查的使用

消毒的String

下面的示例使用filter_var()函数从字符串中删除所有的HTML标签:

<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
运行示例»

验证一个整数

下面的示例使用filter_var()函数,以检查是否变量$ int是一个整数。 如果$ int是一个整数,代码的输出将是: "Integer is valid" 。 如果$ int是不是一个整数,输出将是: "Integer is not valid"

<?php
$int = 100;

if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo("Integer is valid");
} else {
    echo("Integer is not valid");
}
?>
运行示例»

提示: filter_var()和问题0

在上面的例子中,如果$ INT设置为0,上面的函数会返回"Integer is not valid" 。 为了解决这个问题,使用下面的代码:

<?php
$int = 0;

if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo("Integer is valid");
} else {
    echo("Integer is not valid");
}
?>
运行示例»

验证IP地址

下面的示例使用filter_var()函数来检查变量$ IP是一个有效的IP地址:

<?php
$ip = "127.0.0.1";

if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
    echo("$ip is a valid IP address");
} else {
    echo("$ip is not a valid IP address");
}
?>
运行示例»

消毒和验证电子邮件地址

下面的示例使用filter_var()函数首先从$电子邮件变量删除所有非法字符,然后检查它是否是一个有效的电子邮件地址:

<?php
$email = "[email protected]";

// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    echo("$email is a valid email address");
} else {
    echo("$email is not a valid email address");
}
?>
运行示例»

消毒和验证网址

下面的示例使用filter_var()函数首先从URL中移除所有非法字符,然后检查$ URL是有效的URL:

<?php
$url = "http://www.w3ii.com";

// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);

// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
    echo("$url is a valid URL");
} else {
    echo("$url is not a valid URL");
}
?>
运行示例»

完整的PHP Filter参考手册

对于所有的过滤器功能的完整参考,请给我们完整的PHP Filter参考手册。 检查每个过滤器,看看有什么选项和标志是可用的。

该手册包含了简要说明,并使用实例,每个功能!