最近在使用PHP的過程中,發現了一個特別好用的內置函數,用來驗證輸入數據的格式的,相對於自己寫正則表達式來說,方便了不少,只要一個函數既可以搞定,我們來看一下:
要說的這個函數就是filter_var()
具體的用法如下:
如果您要驗證某個字符是否是email:
filter_var($email, FILTER_VALIDATE_EMAIL)
具體的參考PHP手冊:http://php.net/manual/zh/filter.filters.validate.php
而參考手冊中有兩種範例:sanitization和validation,兩者的區別是什麼呢?都有什麼作用呢?
通過參考手冊中的範例,如下示例
- sanitization
<?php
$a = '[email protected]';
$b = 'bogus - at - example dot org';
$c = '([email protected])';
$sanitized_a = filter_var($a, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_a, FILTER_VALIDATE_EMAIL)) {
echo "This (a) sanitized email address is considered valid.\n";
}
$sanitized_b = filter_var($b, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_b, FILTER_VALIDATE_EMAIL)) {
echo "This sanitized email address is considered valid.";
} else {
echo "This (b) sanitized email address is considered invalid.\n";
}
$sanitized_c = filter_var($c, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_c, FILTER_VALIDATE_EMAIL)) {
echo "This (c) sanitized email address is considered valid.\n";
echo "Before: $c\n";
echo "After: $sanitized_c\n";
}
?>
- validatioin
<?php
$email_a = '[email protected]';
$email_b = 'bogus';
if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
echo "Email address '$email_a' is considered valid.\n";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
echo "Email address '$email_b' is considered valid.\n";
} else {
echo "Email address '$email_b' is considered invalid.\n";
}
?>
以上代碼不難發現,sanitization是將需要驗證的字符串進行處理之後,提取裏面更符合標準的字符串,而validate驗證方法呢,則是直接將需要驗證的字符串進行完整匹配。