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 に答える