リンクが壊れているかどうかを確認するための適切な PHP スクリプト (ライブラリ) はありますか? mysql テーブルにドキュメントへのリンクがあり、リンクがドキュメントにつながるかどうか、または別の URL にリダイレクトされるかどうかを確認できます。何か案が?私はそれをPHPで行うことを好みます。
関連する可能性があります: リンクの動作を確認し、そうでない場合は破損していることを視覚的に識別します
リンクが壊れているかどうかを確認するための適切な PHP スクリプト (ライブラリ) はありますか? mysql テーブルにドキュメントへのリンクがあり、リンクがドキュメントにつながるかどうか、または別の URL にリダイレクトされるかどうかを確認できます。何か案が?私はそれをPHPで行うことを好みます。
関連する可能性があります: リンクの動作を確認し、そうでない場合は破損していることを視覚的に識別します
この関数を使用して、壊れたリンクを確認できます。
function check_url($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$headers = curl_getinfo($ch);
curl_close($ch);
return $headers['http_code'];
}
CURL
これを機能させるには、インストールする必要があります。これで、以下を使用して壊れたリンクを確認できます。
$check_url_status = check_url($url);
if ($check_url_status == '200')
echo "Link Works";
else
echo "Broken Link";
HTTP ステータス コードについては、次のリンクも確認してください: HTTP ステータス コード
301
と302
ステータスコードも確認できると思います。
また、別の方法はget_headers
function を使用することです。ただし、これは PHP のバージョンが 5 よりも大きい場合にのみ機能します。
function check_url($url) {
$headers = @get_headers( $url);
$headers = (is_array($headers)) ? implode( "\n ", $headers) : $headers;
return (bool)preg_match('#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers);
}
この場合、出力を確認してください:
if (check_url($url))
echo "Link Works";
else
echo "Broken Link";
これがお役に立てば幸いです:)。
これはいくつかの方法で行うことができます:
最初の方法 - カール
function url_exists($url) {
$ch = @curl_init($url);
@curl_setopt($ch, CURLOPT_HEADER, TRUE);
@curl_setopt($ch, CURLOPT_NOBODY, TRUE);
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$status = array();
preg_match('/HTTP\/.* ([0-9]+) .*/', @curl_exec($ch) , $status);
return ($status[1] == 200);
}
2 番目の方法 - curl がインストールされていない場合 - ヘッダーを取得する
function url_exists($url) {
$h = get_headers($url);
$status = array();
preg_match('/HTTP\/.* ([0-9]+) .*/', $h[0] , $status);
return ($status[1] == 200);
}
第三の方法 - fopen
function url_exists($url){
$open = @fopen($url,'r');
if($handle !== false){
return true;
}else{
return false;
}
}
簡単な回避策の確認として、file_get_contents ()関数でグローバル変数$http_response_headerを使用できます。
例 (PHP ドキュメントからの抜粋):
<?php
function get_contents() {
file_get_contents("http://example.com");
var_dump($http_response_header);
}
get_contents();
var_dump($http_response_header);
次に、最初の行のステータス コードで「HTTP/1.1 200 OK」またはその他のHTTP ステータス コードを確認します。