PHPデータベースのリンクを定期的にループして、リンクが有効なページにつながっているかどうかを確認する必要があります。リンクが期限切れになっているか無効である場合は、出力したくありません。 hrefの値が有効なページに効率的につながることを確認するにはどうすればよいですか?リンクhref属性を検証する
*すべてのポインタありがとうございます。
PHPデータベースのリンクを定期的にループして、リンクが有効なページにつながっているかどうかを確認する必要があります。リンクが期限切れになっているか無効である場合は、出力したくありません。 hrefの値が有効なページに効率的につながることを確認するにはどうすればよいですか?リンクhref属性を検証する
*すべてのポインタありがとうございます。
あなたはまた、より速く、すべてのリストを確認するために、複数のカール要求するたびに使用することができます。 Check here
カールを見てください。それはあなたがPHPでサイトを引っ張ることができますhttp://www.php.net/manual/en/function.curl-exec.php次に、レスポンスのステータスコードかタイトルタグのようなものをチェックしてください。
私は自分自身のようなものですが、私はcURLを使用することをお勧めします。使用上の迅速なGoogle検索は、(私がテストしていない)、次のコードを明らかにした:
<?php
$statusCode = validate($_REQUEST['url']);
if ($statusCode==’200′)
echo ‘Voila! URL ‘.$_REQUEST['url'].
’ exists, returned code is :’.$statusCode;
else
echo ‘Opps! URL ‘.$_REQUEST['url'].
’ does NOT exist, returned code is :’.$statusCode;
function validateurl($url)
{
// Initialize the handle
$ch = curl_init();
// Set the URL to be executed
curl_setopt($ch, CURLOPT_URL, $url);
// Set the curl option to include the header in the output
curl_setopt($ch, CURLOPT_HEADER, true);
// Set the curl option NOT to output the body content
curl_setopt($ch, CURLOPT_NOBODY, true);
/* Set to TRUE to return the transfer
as a string of the return value of curl_exec(),
instead of outputting it out directly */
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute it
$data = curl_exec($ch);
// Finally close the handle
curl_close($ch);
/* In this case, we’re interested in
only the HTTP status code returned, therefore we
use preg_match to extract it, so in the second element
of the returned array is the status code */
preg_match(“/HTTP\/1\.[1|0]\s(\d{3})/”,$data,$matches);
return $matches[1];
}
?>
出典:http://www.ajaxapp.com/2009/03/23/to-validate-if-an-url-exists-use-php-curl/
'有効なページ'はhttpステータスコード= 200ではないことを意味しますか? – safarov
ええ、私は200がほしいと思う。ちょうど404または他の悪いエラーコードではない。特定のURLを持つ製品のリストがあり、サプライヤー(J.C. Pennyなど)がそれらを変更すると、これらの製品へのリンクが変更されます。私は私の顧客を「古い」リンクに送りたくないので、それらの「期限切れの」URLまたは「無効な」URLを出力したくありません。それは理にかなっていますか? – jrubins
あなたはリンクの出力の前に毎回これをしたくないのです...あなたは 'cron'などでスケジュールされたバックグラウンドタスクとしてこれを実行します。 – prodigitalson