-1

100 の Web サイトのリストを取得し、< title ></ title > メタ タグを取得したいとします。正常に動作しているこのスクリプトを見つけましたが、新しい Web サイトに対してプロセス全体を繰り返す方法がわかりません。

<?php
    $ch = curl_init ("http://www.mywebsite.com");
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    $page = curl_exec ($ch);
    echo $page;

    $file = 'title.txt';
    $regex = '/<title>(.*?)<\/title>/s';
    if ( preg_match($regex, $page, $list) )
    echo $list[1];
    else
    echo "Unable to find preg_match";
    file_put_contents($file, html_entity_decode($list[0]));
    ?>

新しい Web サイトに対して curl_init 全体を繰り返す最良の方法は何ですか?

例:

  1. に行く -> http://www.mywebsite.com
  2. タイトルタグを検索
  3. title.txt にタイトルを挿入
  4. リストから 2 番目の Web サイトに移動します -> http://www.mywebsite2.com
  5. タイトルタグの検索
  6. title.txt にタイトルを挿入
  7. リストから 3 番目の Web サイトに移動します -> http://www.mywebsite3.com
  8. など。

また、PHPの観点からさらに使用するためにファイルを処理する最良の方法は何ですか? FILE_APPEND を使用するか、各タイトルを新しいファイル (mywebsite.com_title.txt、mywebsite2.com_title.txt など) に保存する必要がありますか? ありがとう :)

4

1 に答える 1

1

したがって、あなたの質問を正しく理解できれば、複数のサイトでコードを実行する必要があります。アドレスを配列に入れてから、配列をループすることができます。私はあなたのコードを取り、次のループでラップしました。

<?php
$sites = array("http://www.mywebsite.com",
               "http://www.mywebsite2.com",
               "http://www.mywebsite3.com"
              );


    foreach ($sites as $site) {
      #$ch = curl_init ("http://www.mywebsite.com");
      $ch = curl_init ($site);
      curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
      $page = curl_exec ($ch);
      echo $page;

      $file = 'title.txt';
      $regex = '/<title>(.*?)<\/title>/s';
      if ( preg_match($regex, $page, $list) )
      echo $list[1];
      else
      echo "Unable to find preg_match";
      file_put_contents($file, html_entity_decode($list[0]));
    }
    ?>
于 2013-08-29T03:14:31.223 に答える