0

以前我一直在使用此代码从 BBC 网站通过 CURL 提取一些页面内容,

    $c = curl_init('http://news.bbc.co.uk/sport1/hi/football/eng_conf/conference_north_table/default.stm');

    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    $html =  curl_exec ($c);
    if (curl_error($c))
        die(curl_error($c));

    $startpos = strpos($html, '<table border="1" cellpadding="1" cellspacing="0" class="fulltable">');

    $endpos = strpos($html, '<!-- E IINC -->');
    $length = $endpos - $startpos;
    $rest = substr($html, $startpos,$length);
    $rest = str_replace("border=\"1\" cellpadding=\"1\" cellspacing=\"0\"","border=\"0\" cellpadding=\"0\" cellspacing=\"0\"", $rest);
    $rest = str_replace('<tr><td colspan="15"><hr/></td></tr>',"", $rest);

    $rest = str_replace('<tr>
      <td colspan="15">
         <div style="padding: 10px 0 0 0;"><img src=" http://newsimg.bbc.co.uk/sol/shared/img/tbl_spc.gif" height="2px" width="100%"></div>
      </td>
   </tr>
',"", $rest);

    echo $rest;
    curl_close($c);

以前在旧服务器上使用 php 5.1.3 可以正常工作,我们已经将站点迁移到运行 5.4.8 的服务器,但是上面的代码不再工作,有什么原因吗?我看不出有什么问题。

如果我杀死脚本,$html我会得到以下响应,

联赛表

永久移动

文档已移至此处。

但是,如果我通过浏览器导航到 URL,我可以很好地查看页面,所以它显然没有移动到任何地方(在我们迁移服务器之前,Curl 请求正在工作的事实支持了这一点。

4

2 回答 2

1

地址实际上已经移动了。将第一行更改为:

$c = curl_init('http://news.bbc.co.uk/sport2/hi/football/eng_conf/conference_north_table/default.stm');

上面的代码现在向我展示了带有结果的表格。

于 2012-11-15T09:36:29.003 回答
1

你必须使用

curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);

跟随重定向。

有关选项的完整列表,请参阅PHP:curl_setopt

于 2012-11-15T09:39:03.677 回答