ホームページ >バックエンド開発 >PHPチュートリアル >PHP は指定された URL ページ内のすべてのリンクを取得します

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

WBOY
WBOYオリジナル
2016-08-08 09:25:58956ブラウズ

フォーム:http://www.uphtm.com/php/253.html

これは実際に私たち開発者によってよく使われています。私たちは他の Web サイトからフレンドリーなリンクを取得するプロジェクトを行っていたときに、指定された URL ページ内のすべてのリンク関数を取得する PHP 関数をコンパイルしているのを見ました。見てみてください。

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

    // リンクのHTMLコードを取得します
  1. $html = file_get_contents('http://www.111cn.net');
  2. $dom = 新しい DOMDocument();
  3. @$dom->loadHTML($html);
  4. $xpath = 新しい DOMXPath($dom);
  5. $hrefs = $xpath->evaluate('/html/body//a');
  6. for ($i = 0; $i length; $i++) {
  7. $href = $hrefs->item($i);
  8. $url = $href->getAttribute('href');
  9. $url をエコーし​​ます。'
    ';
  10. }
このコードはすべての a タグの href 属性を取得しますが、href 属性値は必ずしもリンクである必要はなく、http: で始まるリンク アドレスのみを保持できます。

// リンクのHTMLコードを取得します
  1. $html = file_get_contents('http://www.111cn.net');
  2. $dom = 新しい DOMDocument();
  3. @$dom->loadHTML($html);
  4. $xpath = 新しい DOMXPath($dom);
  5. $hrefs = $xpath->evaluate('/html/body//a');
  6. for ($i = 0; $i length; $i++) {
  7. $href = $hrefs->item($i);
  8. $url = $href->getAttribute('href');
  9. // http
  10. で始まるリンクを維持します
  11. if(substr($url, 0, 4) == 'http')
  12. $url をエコーし​​ます。'
    ';
  13. }
  14. 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
  9. if(!eregi("://",$regArr[$i][1]))//相対パスであるかどうか、つまり、://
  10. がまだ存在するかどうかを判断します。
  11. if(substr($regArr[$i][1],0,1)=="/")//サイトのルートディレクトリですか
  12. echo "link".($i+1).":".$site.$regArr[$i][1]."
    ";//ルートディレクトリ
  13. その他
  14. echo "link".($i+1).":".$base.$regArr[$i][1]."
    ";//現在のディレクトリ
  15. その他
  16. echo "link".($i+1).":".$regArr[$i][1]."
    ";//相対パス
  17. }
  18. fclose($fp);
  19. ?>
  20. フォーム:http://www.uphtm.com/php/253.html

上記は、コンテンツを含む指定された URL ページ内のすべてのリンクを取得する PHP を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

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