PHP驗證ip、email、host不用正則表達式

最近在使用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驗證方法呢,則是直接將需要驗證的字符串進行完整匹配

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章