PHP は指定された URL ページ内のすべてのリンクを取得します

WBOY
リリース: 2016-06-13 12:18:02
オリジナル
1053 人が閲覧しました

PHP は、指定された URL ページ内のすべてのリンクを取得します。

form:http://www.uphtm.com/php/253.html

これは、実際に開発者によって一般的に使用されています。以前、他のウェブサイトからフレンドリーリンクを取得するプログラムを作成するときに使用しました。今日、友人が指定された URL ページ内のすべてのリンク関数を取得する PHP 関数をコンパイルしたのを見てみましょう。

次のコードは、指定された URL ページ内のすべてのリンク、つまりすべての a タグの href 属性を取得できます:

  1. // リンクの HTML コードを取得します
  2. $ html = file_get_contents('http://www.111cn.net');
  3. $dom = new DOMDocument();
  4. @$dom->loadHTML( $html);
  5. $xpath = new DOMXPath($dom);
  6. $hrefs = $xpath->evaluate('/html/body//a');
  7. for ( $i = 0; $i length; $i ) {
  8. $href = $hrefs->item($i);
  9. $url = $ href->getAttribute('href');
  10. echo $url.'
    ';
  11. }

このコードはすべての a タグの href 属性を取得しますが、href 属性値は必ずしもリンクである必要はなく、http:

    で始まるリンク アドレスのみを保持できます。
  1. // リンクの HTML コードを取得します
  2. $html = file_get_contents('http://www.111cn.net');
  3. $dom = new DOMDocument();
  4. @ $dom->loadHTML($html);
  5. $xpath = new DOMXPath($dom);
  6. $hrefs = $xpath->evaluate( '/html/body// a');
  7. for ($i = 0; $i < $hrefs->length; $i ) {
  8. $href = $hrefs ->item($i );
  9. $url = $href->getAttribute('href');
  10. // http
  11. if (substr($url, 0, 4) == 'http')
  12. echo $url.'
    ';
  13. }
fopen() 関数は、指定された Web ページ内のすべてのリンクを読み取り、その数をカウントします。このコードは、Web ページのコンテンツを収集する必要がある場所での使用に適しています。 Baidu ホーム ページの読み取りは、Baidu ホーム ページのすべてのリンクを見つけるための例として使用されます。コードはテスト済みで完全に使用可能です:

  1. if(empty($url))$url = "http://www.baidu.com/ ";//収集する必要がある URL アドレス
  2. $site=substr($url ,0,strpos($url,"/",8));
  3. $base=substr( $url,0,strrpos($url,"/") 1);//ファイルが見つかりました
  4. $fp = fopen($url, "r" );//URL アドレスのページを開きます
  5. while(!feof($fp))$contents.=fread( $fp,1024);
  6. $pattern="|href=['"]?([^ '"] )[ '" ]|U";
  7. preg_match_all($pattern, $contents, $regArr, PREG_SET_ORDER);//正規表現を使用してすべてに一致します href=
  8. for($i=0;$i< ;count($regArr);$i ){//一致するものをすべて検索しますlinks
  9. if(!eregi("://",$regArr[$i][1]))//相対パスかどうか、つまり://<が残っているかどうかを判定🎜>
  10. if(substr($regArr[$i][1],0,1)=="/")//サイトのルートディレクトリかどうか
  11. echo "link" .($i 1).":".$site.$regArr[$i][1]."
    ";//ルートディレクトリ
  12. else
  13. echo "link".($i 1).":".$base.$regArr[$i][1]."
    ";//現在のディレクトリ
  14. else
  15. echo "link".($i 1).":".$regArr[$i][1]."
    ";// 相対パス
  16. }
  17. fclose($fp);
  18. ?>
  19. フォーム:http://www.uphtm.com /php/253.html

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!