php
  • networking
  • ip
  • ipv4
  • filter-var
  • 2012-02-08 212 views 0 likes 
    0
    <?php 
    $subdomain ='hello.cheapantivirus.me'; 
         $ns1 = 'ns01.000webhost.com'; 
    
    $host = "@$ns1 $subdomain"; 
    $ip = `/usr/bin/dig $host +short A`; 
    
    echo $ip; // output is 31.170.161.67 
    
    $ip3 = '84.8.161.5'; 
    
    if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { 
        echo "valid"; 
    } 
    else { 
        echo " not valid"; // the $ip is invalid 
    } 
    
    
    if(filter_var($ip3, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { 
        echo "valid"; // somehow this one is valid 
    } 
    else { 
        echo " not valid"; 
    } 
    ?> 
    

    我的問題是爲什麼$ ip過濾器顯示爲無效,但是當我手動分配IP $ ip3過濾器顯示爲有效時爲$ ip3。請幫幫我?PHP驗證IP地址

    +2

    那麼,'$ ip'包含什麼? – 2012-02-08 10:57:15

    +0

    '$ ip'包含'31.170.161.67'。我只是在上面粘貼完整的snipet,所以任何人都可以運行它。 – sg552 2012-02-08 11:01:28

    +0

    不,它不。 '$ ip ==「31.170.161.67 \ n」' - 最後的換行符是殺死過濾器的。正如Pekka指出的那樣,一個簡單的trim()可以解決這個問題。 – rodneyrehm 2012-02-08 11:07:56

    回答

    11

    命令行輸出可能包含尾隨空格或換行符。

    嘗試

    $ip = trim($ip); 
    

    做驗證之前。

    +0

    是的,你是對的。不知何故,挖掘輸出有尾隨空間。有用。謝謝。我將此標記爲已解決:) – sg552 2012-02-08 11:07:31

    相關問題