-
ID:ePzkWK さんの質問

phpを使用した指定されたウェブページのタイトルが取得できずに困っています。該当のスクリプトは以下のとおりです。
正規表現で<title></title>の値を抜き出したいのですがそれができません。。
抜き出せないのはすべてもウェブページのタイトルではなく一部(例えば、http://jp.eurail.com/trains-europe/high-speed-trai)でその現象が発生している状況です。原因がわかるからおられましたらお助けいただけますと嬉しいです。

function file_get_contents_curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

$url = ’http://jp.eurail.com/trains-europe/high-speed-trai’;
$html = file_get_contents_curl($url);

preg_match(’/<title>(.+)<\/title>/’,$html,$matches);
$title = $matches[1];

みんなの回答 1 件

ID:54RLfo さんの回答

curl_setopt($ch, CURLOPT_HEADER, true);
としてヘッダ見たら原因分かったよ。

$header = array(
"User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko",
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

と、適当にUAを送信するようにしたら返ってきた。

ID:54RLfo

誤解を招きそうなので補足。
ヘッダを見たら原因が分かったというか、ヘッダを見たことで通信自体は正常に行えていることを確認した上で、HTTPステータス400を解消するためにヘッダを付け加えた。という感じ。

最終更新日:2015-03-01 (2,019 views)

関連するトピックス

ページ上部に戻る