-1

假设我有一个包含 100 个网站的列表,我想获取 <title></title> 元标记。我发现这个脚本运行良好,但我不知道如何为新网站重复整个过程:

<?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]));
    ?>

为新网站重复整个 curl_init 的最佳方法是什么?

例如:

  1. 转到-> http://www.mywebsite.com
  2. 搜索标题标签
  3. 将标题插入到 title.txt
  4. 从列表中转到第二个网站 -> http://www.mywebsite2.com
  5. 搜索标题标签
  6. 将标题插入到 title.txt
  7. 从列表中转到第三个网站 -> 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 回答