如何檢查PHP是否存在URI?檢查一個URI是否存在?
我想它會返回一個錯誤代碼,我可以在使用file_get_contents
之前檢查它,因爲如果我在不存在的鏈接上使用file_get_contents
,它會給我一個錯誤。
如何檢查PHP是否存在URI?檢查一個URI是否存在?
我想它會返回一個錯誤代碼,我可以在使用file_get_contents
之前檢查它,因爲如果我在不存在的鏈接上使用file_get_contents
,它會給我一個錯誤。
嘗試功能array get_headers($url, [, int $format = 0 ])
,它應該返回false
失敗 - 否則,您可以假設uri存在,因爲web服務器爲您提供了標題信息。
我希望該功能使用HTTP HEAD請求而不是GET,這會導致比上述fopen
解決方案少得多的流量。
試着這麼做:
if ($_REQUEST[url] != "") {
$result = 1;
if (! ereg("^https?://",$_REQUEST[url])) {
$status = "This demo requires a fully qualified http:// URL";
} else {
if (@fopen($_REQUEST[url],"r")) {
$status = "This URL s readable";
} else {
$status = "This URL is not readable";
}
}
} else {
$result = 0;
$status = "no URL entered (yet)";
}
然後事後你可以使用調用這個函數:
if ($result != 0) {
print "Checking URL <b>".htmlspecialchars($_REQUEST[url])."</b><br />";
}
print "$status";
ereg()在PHP 5.3中被棄用,並且將被PHP 6刪除。您應該使用preg_match()來代替。 – 2010-03-12 16:16:13
O,對。感謝您的領導! – lugte098 2010-03-22 08:27:48
您可以發送CURL請求的URI/URL。根據協議,您可以檢查結果。對於HTTP,您應該檢查HTTP狀態碼404
。檢查the curl manual on php.net。在某些情況下,您可以使用file_exists()
函數。
<?php
$curl = curl_init('http://www.example.com/');
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_exec($curl);
$info = curl_getinfo($curl);
echo $info['http_code']; // gives 200
curl_close($curl);
$curl = curl_init('http://www.example.com/notfound');
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_exec($curl);
$info = curl_getinfo($curl);
echo $info['http_code']; // gives 404
curl_close($curl);
try {
$fp = @fsockopen($url, 80);
if (false === $fp) throw new Exception('URI does not exist');
fclose($fp);
// do stuff you want to do it the URI exists
} catch (Exception $e) {
echo $e->getMessage();
}
checkdnsrr()
做一個DNS查找。可能有用。
這個問題怎麼回答不了? – Pointy 2010-03-12 15:34:45
它不會返回我一個錯誤代碼,我可以做一個if語句。它給了我一個錯誤頁面。 – ajsie 2010-03-12 15:37:31