Prüfen, ob URL existiert

karl123

Erfahrenes Mitglied
Guten Morgen,

Ich stelle auf meiner Seite RSS-Feeds dar, die ich als XML-Dateien von URLs lade. Wenn nun eine solche URL nicht vorhanden ist, erscheint eine Fehlermeldung, die ich abfangen möchte.

Warning: DOMDocument::load() ...: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt.

Ich sehe 2 Möglichkeiten:
- Die Fehlermeldung abfangen. Dazu kenne ich den Syntax nicht.
- Vorher prüfen, ob die URL existiert. Was ich bisher dazu gefunden habe, erscheint mir sehr kompliziert.

Kennt jemand eine einfache Lösung?
 
Hi, eine sehr einfache Möglichkeit wäre folgendes (ungetestet):
PHP:
$dom = new DOMDocument();

if(!$dom->load($url, LIBXML_NOWARNING))
{
  die('Ziel nicht gefunden');
}
Falls es nicht funktioniert könntest du es alternativ so versuchen:
PHP:
$dom = new DOMDocument();

if(!@$dom->load($url))
{
  die('Ziel nicht gefunden');
}
Wenn du vorher prüfen willst, oder musst, ob die URL existiert, dann bietet sich die Funktion fsockopen() an, da du hier selbst bestimmen kannst, wie lange es maximal dauern darf, bis du eine Rückmeldung bekommst. Angewandt sähe das dann in etwa so aus:
PHP:
$port = 80;
$timeout = 0.5; // Timeout in Sekunden, wenn bis dahin keine Rückmeldung von der URL erfolgt, wird der Versuch abgebrochen.

if(!($fp = @fsockopen($uri, $port, $errno, $errstr, $timeout)))
{
  die('Ziel nicht gefunden');
}

@fclose($fp);
 
Zuletzt bearbeitet:
Hallo EvilO,

die 2. Methode hat funktioniert; ich musste nur ein @ einfügen. Das hat die Warnung unterdrückt.

Danke für deine Hilfe.
 
Zurück