0

ページのタイトルがわかれば、ダウンロード リンクがアクティブか無効かがわかります。

例: " Free online storage " はデッド リンクのタイトルで、" [file name] " はアクティブ リンク(mediafire)のタイトルです。しかし、ページの応答に時間がかかりすぎるため、ダウンロード リンクがアクティブか無効かを確認する他の方法はありますか?

それが私がやったことです:

<?php

function getTitle($Url){
$str = file_get_contents($Url);
if(strlen($str)>0){
    preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
    return $title[1];
}
}

?>
4

3 に答える 3

2

ページ/ファイル全体をダウンロードする GET リクエストを実行せず、HTTP ヘッダーのみを取得する HEAD リクエストを実行し、ステータスが 200 であり、コンテンツ タイプが text/html でないことを確認します。

于 2012-12-21T12:22:38.077 に答える
1

このようなもの...

function url_validate($link)
{
    #[url]http://www.example.com/determining-if-a-url-exists-with-curl/[/url]
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $link);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10); //follow up to 10 redirections - avoids loops
    $data = curl_exec($ch);
    curl_close($ch);
    preg_match_all("/HTTP\/1\.[1|0]\s(\d{3})/",$data,$matches);

    $code = end($matches[1]);

    if(!$data) 
    {
        return(false);
    } 
    else 
    {
        if($code==200) 
        {
            return(true);
        } 
        elseif($code==404) 
        {
            return(false);
        }
    }
}

任意の cURL ライブラリ関数を安全に使用できます。これは合法的なものであり、ハッキングの試みとは見なされません。唯一の要件は、Web ホスティング会社に cURL 拡張機能がインストールされていることです。

于 2012-12-21T12:26:37.317 に答える
0

cURL仕事をするべきです。必要に応じて、返されたヘッダーとテキスト コンテンツも確認できます。

于 2012-12-21T12:23:46.070 に答える