天天看點

php判斷伺服器檔案是否存在,PHP判斷遠端檔案是否存在

我們要處理的是判斷一個遠端伺服器檔案是否是存在,而不是自己本同伺服器目錄了,如果判斷遠端伺服器的檔案上否存在我們需要使用到curl_init,fsockopen,fopen方法,下面我來給大家舉例說明。

fopen函數

fopen() 函數打開檔案或者 URL。

如果打開失敗,本函數傳回 FALSE。

文法

fopen(filename)filename 規定要打開的檔案或 URL。

從這個函數的說明來看是支援url的,代碼如下

 代碼如下 複制代碼

$url = 'http://www.xxx.com/images/test.jpg';

if( @fopen( $url, 'r' ) )

{

echo 'File Exits';

}

else

{

echo 'File Do Not Exits';

}

?>

這樣的寫個人很不推薦哦,因為它這們很是浪費伺服器性能資源的。

curl函數

例子

 代碼如下 複制代碼

<?php

$url2 = 'http://www.jquerycn.cn/ test.jpg';

$ch = curl_init();

$timeout = 10;

curl_setopt ($ch, CURLOPT_URL, $url2);

curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$contents = curl_exec($ch);

//echo $contents;

if (preg_match("/404/", $contents)){

echo '檔案不存在';

}

?>

小提示,不過此函數需我伺服器開啟才可用哦

推薦使用此方法哦,還有一種利用fsockopen 這種是專業的遠端采集版了,

 代碼如下 複制代碼

$url = "http://www.jquerycn.cn /.gif";

$info = parse_url($url);

$fp = fsockopen($info['host'], 80,$errno, $errstr, 30);

fputs($fp,"GET {$info['path']} HTTP/1.1rn");

fputs($fp, "Host: {$info['host']}rn");

fputs($fp, "Connection: closernrn");

$headers = array();

while(!feof($fp)) {

$line = fgets($fp);

if($line != "rn") {

$headers[] = $line;

}else {

break;

}

}

echo "

";      

print_r($headers);

小提示,不過此函數需我伺服器開啟才可用哦