filter_var()函数使用指定的过滤器来过滤变量;它可用于验证和过滤数据。
基本语法
filter_var(var, filtername, options)
参数:filter_var()函数接受三个参数
● var:表示要过滤的变量,不可省略(必填参数)。
● filtername:用于指定要使用的过滤器的ID或名称。默认值为FILTER_DEFAULT,不会导致过滤;可省略。
● options:用于指定要使用的一个或多个标志/选项。检查每个过滤器是否有可能的选项和标志;可省略。
返回值:过滤成功,则返回已过滤的数据;过滤失败,则返回FALSE。
示例1:过滤字符串
// FILTER_SANITIZE_NUMBER_INT 过滤器删除数字中所有非法的字符。
// 该过滤器允许所有数字以及 +-。
$str = "hello php er7y6t258u8@%^^%%$$#++!";
$newstr = filter_var($str, FILTER_SANITIZE_NUMBER_INT);
echo $newstr; // 762588++
// 说明:FILTER_SANITIZE_NUMBER_INT表示删除除了数字和 +-的所有其他字符。
?>
示例2:验证IP地址
可以使用filter_var()函数来验证指定的ip地址是否有效。
header("content-type:text/html;charset=utf-8");
$ip = "127.0.0.1";
if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
echo("$ip 是有效的IP地址");
} else {
echo("$ip 不是有效的IP地址");
}
// 127.0.0.1 是有效的IP地址
?>
示例3:过滤并验证电子邮件(email)地址
filter_var()函数首先会从包含email地址的变量中删除所有非法字符,然后检查它是否是有效的电子邮件地址:
// FILTER_SANITIZE_EMAIL 过滤器删除字符串中所有非法的 e-mail 字符。
// 该过滤器允许所有的字符、数字以及 $-_.+!*'{}|^~[]`#%/?@&=。
header("content-type:text/html;charset=utf-8");
$email = "148521425@qq.com";
// 从电子邮件中删除所有非法字符
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// 判断是否为有效的电子邮件
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email 是一个有效的电子邮件地址");
} else {
echo("$email 不是一个有效的电子邮件地址");
}
// 148521425@qq.com 不是一个有效的电子邮件地址
?>
$var="some(one)@exa\\mple.com";
$var2 = filter_var($var, FILTER_SANITIZE_EMAIL);
var_dump($var2); // string 'someone@example.com' (length=19)
?>
示例4:过滤并验证URL
filter_var()函数首先从URL中删除所有非法字符,然后检查是否为有效URL:
// FILTER_SANITIZE_URL 过滤器删除字符串中所有非法的 URL 字符。
// 该过滤器允许所有的字符、数字以及 $-_.+!*'(),{}|\\^~[]`">
header("content-type:text/html;charset=utf-8");
$url = "https://www.php.cn";
// 从URL中删除所有非法字符
$url = filter_var($url, FILTER_SANITIZE_URL);
// 验证URl是否有效
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
echo("$url 是一个有效的URL");
} else {
echo("$url 不是一个有效的URL");
}
// https://www.php.cn 是一个有效的URL
?>