2010-11-03 46 views
3

因此,我正在一個網站上的目錄圖像列在一個單獨的域上,而不是具有該目錄的數據庫/網站。已經設立的方式,是家庭的姓氏加配偶首個字母組成圖像的名字,讓...檢查圖片是否存在於單獨的域

John and Kathy Doe 

將對應於圖像:

doe-jk.jpg 

什麼我想要做的,是在顯示從數據庫中每件物品的邏輯,它會檢查,看看是否在其他領域存在的這一形象,這樣的事情:

$picture_name = "http://totally-different-domain.com/".$file_name; 
    if (isset($picture_name)) 
    { 
     echo $picture_name; 
    } 
    else 
    { 
     echo 'empty.jpg'; 
    } 

是否anybod你知道當文件存在於不同的域時我該如何做到這一點?

編輯:我通過不同的域的意思,是腳本存在於http://domain1.com/directory.php,幷包含在directory.php圖像是http://totally-different-domain.com/doe-jk.jpg

回答

10

您可以檢查文件是否由另一個域中存在使用get_headers函數並檢查是否得到404。

$url = 'http://totally-different-domain.com/doe-jk.jpg' 
$response = get_headers($url, 1); 
$file_exists = (strpos($response[0], "404") === false); 
+0

這似乎不適用於目錄:即使目錄存在,響應也是404。 – WoodrowShigeru 2017-04-23 14:28:03

2

is_readable()檢查是否存在和可讀性。

$picture_name = "http://totally-different-domain.com/".$file_name; 
if (!is_readable($picture_name)) { 
    $picture_name = 'empty.jpg'; 
} 
echo $picture_name; 
+0

請注意,根據[可讀#61293](http://php.net/manual/en/function.is-readable.php#61293),即使對於HTTP錯誤,「可讀」也可能返回true。 500,403等)。我沒有檢查過這個,但是你可能需要使用@ jhchen的解決方案和狀態碼白名單(2 **,301等)而不是黑名單(404)。 – 2014-12-03 15:28:58