4

file_get_contents()PHPの関数を使用して英語以外の(Unicode)URLにアクセスしようとすると、このエラーが発生します。URLは次のとおりです。http://ml.wikipedia.org/wiki/%E0%B4%B2%E0%B4%AF%E0%B4%A3%E0%B5%BD_%E0%B4%AE%E0%B5 %86%E0%B4%B8%E0%B5%8D%E0%B4%B8%E0%B4%BF

このエラーが発生しました:

警告:file_get_contents(http://ml.wikipedia.org/wiki/%E0%B4%B2%E0%B4%AF%E0%B4%A3%E0%B5%BD_%E0%B4%AE%E0%B5 %86%E0%B4%B8%E0%B5%8D%E0%B4%B8%E0%B4%BF)[function.file-get-contents]:ストリームを開くことができませんでした:HTTPリクエストが失敗しました!HTTP /1.0403禁止..

致命的なエラー:8行目のG:\ xampp \ htdocs \ codes \ htmlParse1.phpの非オブジェクトでメンバー関数find()を呼び出す

機能に制限はありfile_get_contents()ますか?英語のURLのみを受け入れますか?

4

2 に答える 2

3

ユーザーエージェントのようなヘッダー情報がありません。私はあなたがただ使うことを勧めますただ使うcurl

$url = 'http://ml.wikipedia.org/wiki/%E0%B4%B2%E0%B4%AF%E0%B4%A3%E0%B5%BD_%E0%B4%AE%E0%B5%86%E0%B4%B8%E0%B5%8D%E0%B4%B8%E0%B4%BF';
$ch = curl_init($url); // initialize curl handle
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17");
curl_setopt($ch, CURLOPT_REFERER, "http://ml.wikipedia.org");
curl_setopt($ch, CURLOPT_ENCODING, "UTF-8");
$data = curl_exec($ch);
print($data);

ライブCURLデモ

使用する必要がある場合file_get_content

$options = array(
        'http'=>array(
                'method'=>"GET",
                'header'=>"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" .
                "Cookie: centralnotice_bucket=0-4.2; clicktracking-session=M7EcNiC2Zcuko7exVGUvLfdwxzSK3Boap; narayam-scheme=ml\r\n" . 
                "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"
        )
);


$url = 'http://ml.wikipedia.org/wiki/%E0%B4%B2%E0%B4%AF%E0%B4%A3%E0%B5%BD_%E0%B4%AE%E0%B5%86%E0%B4%B8%E0%B5%8D%E0%B4%B8%E0%B4%BF';
$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);
echo $file ;

ライブfile_get_contentデモ

于 2013-01-20T20:09:27.450 に答える
1

がある場合403 Forbidden、接続は機能するはずです。これは単なる警告であり、Webサーバーがステータスコード403で応答しました。ウィキペディアは有効なユーザーエージェントなしでのダウンロードを拒否します。

スクリプトは、連絡先情報を含む有益なUser-Agent文字列を使用する必要があります。そうしないと、通知なしにIPブロックされる可能性があります。

2番目のエラーは、呼び出しの結果(Stringオブジェクト)を処理している次の行からのものである必要がありますfile_get_contents(...)

編集:ini_set('user_agent', 'wikiPHP');リクエストを行う前に、たとえばでユーザーエージェントを設定してみてください。それはうまくいくはずです。

于 2013-01-20T19:25:11.183 に答える