W3C中文教程
全球最大最新的中文 Web 技术教程
HTML CSS SQL PHP COLORS MYSQL BOOTSTRAP
 

PHP 过滤器



验证数据 = 确定数据是否正确。

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


PHP过滤器扩展

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

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

filter_list()函数可用于列表内容:

Example

<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服务数据
  • 服务器变量
  • 数据库查询结果
Note 您应该总是验证外部数据!
提交的数据无效可能会导致安全问题并破坏您的网页!
通过使用PHP过滤器,您可以确保您的应用程序获得正确的输入!

PHP filter_var() 函数

filter_var() 用于函数验证和清理数据。

filter_var() 函数使用指定的过滤器过滤单个变量。 它需要两个数据:

  • 检查变量
  • 检查类型

过滤字符串

以下实例使用 filter_var() 函数从字符串中删除所有HTML标记:

Example

<?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":

Example

<?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"。 要解决这个问题,请使用下面的代码:

Example

<?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地址:

Example

<?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() 函数首先从 $email 变量中删除所有非法字符,然后检查它是否是有效的电子邮件地址:

Example

<?php
$email = "john.doe@example.com";

// 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");
}
?>
运行实例 »

过滤和验证URL

以下实例使用 filter_var() 函数首先从URL中删除所有非法字符,然后检查 $url 是否是有效的URL:

Example

<?php
$url = "https://www.w3schools.wang";

// 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过滤器参考手册

有关所有过滤器功能的完整参考,请查看我们的 PHP 过滤器参考手册

参考手册包含了简单的说明和使用示例为每个功能!