一般都是用正则从格式上判断。到google找一下,比如:/^\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]$/

解决方案 »

  1.   

    这个可能要更好一些:
    /^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$/
      

  2.   

    <?php 
    $fd=fopen('access.log','r'); 
    while (!feof ($fd)) { 
    $line = fgets($fd); 
    //echo "$line"; list($ip)=explode(' ',$line,2); 
    if ($ip=='') continue; 
    list($s1,$s2)=explode('] "',$line,2); 
    list($s3,$url,$s3,$s3,$s3,$ref)=explode(' ',$s2); 
    list($s3,$tm)=explode('[',$s1); 
    list($s1,$s2,$s3)=explode('/',$ref); 
    $ref=$s3; echo "IP:$ip\n"; 
    echo "TIME:$tm\n"; //echo "URL:$url\n"; 
    list($s1,$s2)=explode('?',$url); 
    foreach (explode('&',$s2) as $url_v){ 
    list($s1,$s2)=explode('=',$url_v); 
    if ($s1=='a') $url_v_a=$s2; 
    elseif ($s1=='u') $url_v_u=$s2; 
    elseif ($s1=='t') $url_v_t=$s2; 
    elseif ($s1=='c') $url_v_c=$s2; 
    } list($s1,$s2,$s3)=explode('/',$url_v_u); 
    $url_v_u=$s3; echo "URL_a:$url_v_a\n"; 
    echo "URL_u:$url_v_u\n"; 
    echo "URL_t:$url_v_t\n"; 
    echo "URL_c:$url_v_c\n"; 
    echo "REF:$ref\n"; 

    fclose($fd); 
    ?>
      

  3.   

    //判断IP
    function Is_Ip($str='')
    {
    if(empty($str))return;
    return (ereg('^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$)',$str)) ? '正确' : '错误';
    }