URL mit PHP auf Existenz überprüfen

Manchmal ist es nötig Dateien auf anderen Servern zu referenzieren (z.B. Bilder, Audio, Video) oder auf diese zu verlinken: Um Duplikate zu vermeiden greifen beispielsweise die Webseiten einzelner Firmen-Fillalen auf zentral hinterlegte Fotos ihrer Mitarbeiter zurück um diese auf Kontaktseiten auszugeben. Oder ein IT-Dienstleister verlinkt seine Kunden innerhalb seine (gehosteten) Website auf seinen (lokalen) Testserver im Hinterzimmer seines Büros.

Damit in den geschilderten Fällen nicht unschöne Platzhalter (z.B. ein Bildrahmen mit rotem X) oder ungültige Links beim Ausfall des referenzierten Servers entstehen, kann es sinnvoll sein, die Existenz und Verfügbarkeit einer URL zu prüfen.

Die Funktion

Folgende Funktion fragt die Header bei der Ziel-URL ab, und prüft diese auf HTTP-Header:

<?php
function url_check($url) {
        $hdrs = @get_headers($url);
        return is_array($hdrs) ? preg_match('/^HTTP\\/\\d+\\.\\d+\\s+2\\d\\d\\s+.*$/',$hdrs[0]) : false;
    };
?>

Beispiel: URL auf Existenz überprüfen

Damit lässt sich nun die Verfügbarkeit der Ziel-URL feststellen und demenstprechend Ausgaben generieren. Zum Beispiel so:

<?php

    //Funktion deklarieren
    function url_check($url) { 
        $hdrs = @get_headers($url); 
        return is_array($hdrs) ? preg_match('/^HTTP\\/\\d+\\.\\d+\\s+2\\d\\d\\s+.*$/',$hdrs[0]) : false; 
    }; 

    //URL pruefen
    if(url_check('http://www.andreherdling.de')){
        //URL gueltig
        echo 'andreherdling.de ist erreichbar!';
    } else {
        //URL ungueltig
        echo 'andreherdling.de ist NICHT erreichbar!';
    };

?>

Datei auf Verfügbarkeit prüfen

Folgendes Beispiel prüft, ob ein bestimmtes Bild auf dem Remote-Server vorhanden ist und zeigt ein Platzhalterbild sollte dem nicht so sein:

<?php

    //Funktion deklarieren
    function url_check($url) { 
        $hdrs = @get_headers($url); 
        return is_array($hdrs) ? preg_match('/^HTTP\\/\\d+\\.\\d+\\s+2\\d\\d\\s+.*$/',$hdrs[0]) : false; 
    }; 

    //URL pruefen
    if(url_check('http://www.andreherdling.de/apple-touch-icon.png')){
        //URL gueltig
        echo '<img src="http://www.andreherdling.de/apple-touch-icon.png" alt="Icon" title="Icon" />';
    } else {
        //URL ungueltig
        echo '<img src="platzhalerbild.png" alt="Icon" title="Icon" />';
    };

?>

Fragen, Hinweise oder Verbesserungsvorschläge wie immer gern in den Kommentaren.

 

3 Kommentare Schreibe einen Kommentar

  1. Schon mal probiert wenn URL-Rewrites eingesetzt werden? Denn dann fällt dieses Kartenhaus hier gnadenlos zusammen … probier’s doch mal mit curl_getinfo

Schreibe einen Kommentar