ホームページ >php教程 >php手册 >phpで指定したIPの物理アドレスを取得するコード(正規表現)

phpで指定したIPの物理アドレスを取得するコード(正規表現)

WBOY
WBOYオリジナル
2016-06-21 08:54:021550ブラウズ

独自の IP データベースを構築すると、リソースが消費され、更新が不便になります。既製の IP クエリを使用してみてはいかがでしょうか。以下に、IP 物理アドレスを取得するための PHP コードを書きました (いくつかの欠陥があります。お気軽に教えてください)

コードをコピーします コードは次のとおりです以下:




UTF-8" />


<メタ名="説明" content="" />

$ipAddr = "218.75.124.100"; = "http://www.ip138.com/ips8.asp?ip=".$ipAddr."&action=2";
$contents = file_get_contents($ip138Addr);
$pattern = "/< ;li.+?/li>/";
$string = $contents;
preg_match_all($pattern,$string,$addrArray);
$num = count($addrArray[0]);
for($i = 0;$i<$num;$i++){
echo $addrArray[0][$i] = mb_convert_encoding($addrArray[0][$i],"UTF-8 ", "GB2312");
switch($i) {
case 0:$str = "

  • このサイトのメインデータ:
  • ";break;
    case 1 : $str = "
  • 参照データ 1:
  • ";break;
    case 2:$str = "
  • 参照データ 2:
  • ";break; 🎜 >case 3:$str = "
  • 参考データ 3:
  • ";break;
    case 4:$str = "
  • 参考データ 4:
  • " ; Break;
    case 5:$str = "
  • 参考データ 6:
  • ";break;
    case 6:$str = "
  • 参考データ 7:< / li>";break;
    }
    $addrArray[0][$i] = トリム($addrArray[0][$i],$str);
    }
    $addrArray[ 0 ][0] = トリム($addrArray[0][0],":");
    echo "
    print_r($addrArray)"; pre> ;";
    ?>




    このコードは正規表現を使用して、http://www.ip138.com にアクセスした後のコンテンツの一部を傍受します。正規表現は私が作成したものです。

    最初は大丈夫でしたが、以下の処理結果が文字化けしていました。 $str で定義した文字列(文字列の先頭と末尾の識別子を削除)が文字化けしなくなったら、別の文字列を追加してください。 ":" 文を削除すると文字化けしない現象が実現できます。理由はわかりませんが...

    正規表現 - 指定した IP の物理アドレスを取得 (2) chinaz data


    前の IP で得られた結果 あまり完璧ではありません。理由は、ip138 の IP 解決が外部アドレスを扱う場合にあまり詳細ではないため、Chianz.com を使用してコードを書き直しました。


    コードをコピー
    コードは次のとおりです:

    UTF-8" />

    <メタ名="説明" content="" />

    $ipAddr = "4.4.44.4"; = "http://tool.chinaz.com/IP/?IP=".$ipAddr;
    $contents = file_get_contents($ipChinazAddr);
    $pattern = "/==>.+
    /";
    $string = $contents;
    preg_match_all($pattern,$string,$addrArray);
    $num = count($addrArray[0 ]);
    $pattern = "/(==>>).+(==>>s)/";
    for($i = 0;$i$addrArray[0][$i] = preg_replace($pattern,"",$addrArray[0][$i]);
    }
    echo "

    "; <br/>print_r($addrArray); <br/>エコー "
    ?>

    結果は満足です




    上記は、IP 物理アドレスを取得するために書いた 2 つのコードです。初心者として、何もすることがないときに簡単なコードを書くのは非常に興味深いです。しかし、結局のところ、私は初心者なので、セキュリティ、スペースの使用、時間の効率などの問題にこれ以上注意を払うことはできません。兄弟、ありがとう






  • 声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。