2013-02-20 12 views
10

Jestem w trakcie kodowania portalu nieruchomości. Utknąłem na sprawdzaniu obrazów. Wiem, jak sprawdzić, czy ustawiony jest adres URL obrazu. Problem polega jednak na wykryciu, czy w adresie URL rzeczywiście znajduje się poprawny obraz.Sprawdź, czy obraz istnieje php

przykład: http://property.images.themovechannel.com/cache/7217/6094437/img_main.jpg

Ten url obraz istnieje, ale obraz jest została usunięta więc tylko wyświetla puste w moim wyszukiwaniu propety. Czy istnieje sposób sprawdzenia, czy w adresie URL znajduje się obraz, a następnie wyświetlenie symbolu zastępczego, jeśli nie istnieje.

coś

$imageURL = "http://property.images.themovechannel.com/cache/7217/6094437/img_main.jpg"; 

if (exists($imageURL)) { display image } 
else { display placeholder } 

Ale wszystko to robi to sprawdzić istniejącej zawartości, która to robi nie ma żadnego obrazu nie

Dzięki z góry

+0

Być może można szukać tag w zwróconej HTML? – silkfire

+0

Myślałem o tym, ale strona jest całkiem spora, chciał zrobić to wszystko w locie za pomocą php –

+0

. Czy mógłbyś zamieścić link do obrazu, który _ istnieje? – silkfire

Odpowiedz

24

Zastosowanie getimagesize() aby upewnić się, że adres URL wskazuje prawidłowy obraz.

if (getimagesize($imageURL) !== false) { 
    // display image 
} 
+7

Jest to bardzo powolna funkcja zewnętrznego identyfikatora URI. – pltvs

+0

jeśli plik nie istnieje, powoduje to php Uwaga. Użyj tej funkcji z "@" jest zły sposób, więc myślę, że lepiej jest, że @ plutov.by opisał – Vaha

+0

@ Vaha Uwaga jednak, że odpowiedź plutov nie robi to, co ta odpowiedź robi, sprawdza tylko, czy istnieje określony adres URL. –

8
function exists($uri) 
{ 
    $ch = curl_init($uri); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_exec($ch); 
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); 

    return $code == 200; 
} 
0
function is_webUrl($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    // don't download content 
    curl_setopt($ch, CURLOPT_NOBODY, 1); 
    curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    if (curl_exec($ch) !== FALSE) { 
     return true; 
    } else { 
     return false; 
    } 
} 

if(is_webUrl('http://www.themes.tatwerat.com/wp/ah-personal/wp-content/uploads/2016/08/features-ah-wp-view.jpg')) { 
    echo 'yes i found it'; 
}else{ 
    echo 'file not found'; 
} 
0

Można use file_exists funkcja aby sprawdzić, czy obraz istnieje, ale należy podać ścieżkę fizyczną obrazu

if (file_exists(dirname($_SERVER['SCRIPT_FILENAME']).'/'.$filename))   
{ 
    // your code here 
}