質問

私は、ヘッダーを取得するために、PHPでのサーバーへのハイパーテキスト転送プロトコルのHEADコマンドを送信するために好きではなく、コンテンツやURLです。私は効率的な方法でこれをどのように行うのですか?

おそらく最も一般的なユースケースは死んWebリンクをチェックすることです。このために私は、HTTP要求ではなく、ページコンテンツの応答コードが必要になります。 PHPでのWebページを取得することはfile_get_contents("http://...")を使用して簡単に行うが、それはどのような/全体のページコンテンツ/画像をダウンロードすると、リンクをチェックする目的のために、これは本当に非効率的であることができます。

役に立ちましたか?

解決

あなたはHEADにリクエストメソッドを設定するには、HTTPコンテキストオプションを使用することができますカールする代替案として。そして、これらのオプションを使用してHTTP(ラッパー)のストリームを開き、メタデータをフェッチます。

$context  = stream_context_create(array('http' =>array('method'=>'HEAD')));
$fd = fopen('http://php.net', 'rb', false, $context);
var_dump(stream_get_meta_data($fd));
fclose($fd);

も参照してください。
  http://docs.php.net/stream_get_meta_data
  http://docs.php.net/context.httpする

他のヒント

あなたは cURLのにしてきれいにこれを行うことができます

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");

// This changes the request method to HEAD
curl_setopt($ch, CURLOPT_NOBODY, true);

// grab URL and pass it to the browser
curl_exec($ch);

// Edit: Fetch the HTTP-code (cred: @GZipp)
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

// close cURL resource, and free up system resources
curl_close($ch);

カールよりもさらに簡単に - ちょうどあなたが指定した任意のURLのためのすべてのヘッダ情報の配列を返すPHPget_headers()functionを使用しています。そして、リモートファイルの存在をチェックするための別の本当の簡単な方法は、(あなたがこのためにallow_url_fopenを有効にする必要があります)読み取りモードでURLを開こうusefopen()andすることです。

ただ、それはすべてそこにあります、これらの機能のためのPHPマニュアルをチェックしてください。

梨はそれを持っているように、

に思えるます:

http://pear.php.net/manual /en/package.http.http.head.phpする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top