Start · Sprachen · PHP · Referenz · Uri\WhatWg\InvalidUrlException

Uri\WhatWg\InvalidUrlException

Klasse

Wird geworfen, wenn eine URL gemäß dem WHATWG-URL-Standard ungültig oder nicht parsebar ist.

seit PHP 8.4.0 Kategorie: error

Signatur

class Uri\WhatWg\InvalidUrlException extends \ValueError

Beschreibung

Uri\WhatWg\InvalidUrlException ist eine Ausnahme, die ausgelöst wird, wenn eine URL-Zeichenkette nicht dem WHATWG-URL-Standard (Living Standard) entspricht und daher nicht geparst oder verarbeitet werden kann. Sie erweitert \ValueError und gehört zur Uri\WhatWg-Erweiterung, die in PHP 8.4 eingeführt wurde.

Der WHATWG-URL-Standard definiert strenge Regeln für gültige URLs, die von Webbrowsern verwendet werden. Wenn eine URL-Zeichenkette gegen diese Regeln verstößt — etwa durch ungültige Zeichen, fehlende Pflichtbestandteile wie das Schema oder nicht auflösbare Hostnamen — wird diese Ausnahme geworfen, anstatt eine fehlerhafte oder unvollständige URL-Repräsentation zurückzugeben.

Im Gegensatz zu parse_url(), das fehlerhafte URLs oft stillschweigend akzeptiert oder falsch parst, liefert die Uri\WhatWg-Erweiterung ein robustes, standardkonformes Verhalten und macht ungültige URLs durch diese Ausnahme explizit sichtbar. Dies erleichtert die Fehlerbehandlung erheblich.

Die Ausnahme sollte mit einem try/catch-Block abgefangen werden, wann immer Benutzereingaben oder externe Daten als URLs verarbeitet werden, um fehlerhafte Eingaben sicher und kontrolliert zu behandeln.

Beispiele

Ungültige URL abfangen

<?php
use Uri\WhatWg\Url;
use Uri\WhatWg\InvalidUrlException;

try {
    $url = Url::parse('das-ist-keine-url');
} catch (InvalidUrlException $e) {
    echo 'Ungültige URL: ' . $e->getMessage() . PHP_EOL;
}
Ungültige URL: The URL "das-ist-keine-url" is not valid.

Benutzereingabe validieren und sicher verarbeiten

<?php
use Uri\WhatWg\Url;
use Uri\WhatWg\InvalidUrlException;

function verarbeiteUrl(string $eingabe): string {
    try {
        $url = Url::parse($eingabe);
        return (string) $url;
    } catch (InvalidUrlException $e) {
        // Eingabe ist keine gültige URL nach WHATWG-Standard
        return 'Fehler: ' . $e->getMessage();
    }
}

echo verarbeiteUrl('https://example.com/pfad?q=test') . PHP_EOL;
echo verarbeiteUrl('http://') . PHP_EOL;
echo verarbeiteUrl('ftp://files.example.org/datei.txt') . PHP_EOL;
https://example.com/pfad?q=test Fehler: The URL "http://" is not valid. ftp://files.example.org/datei.txt

// Wichtig · Fallstricke

Sicherheitshinweis: Beim Verarbeiten von URLs aus Benutzereingaben sollte stets InvalidUrlException abgefangen werden, um sicherzustellen, dass nur wohlgeformte, standardkonforme URLs weiterverarbeitet werden. Dies verhindert, dass fehlerhafte oder bösartige URL-Strukturen in die Anwendungslogik gelangen.

Die Klasse steht erst ab PHP 8.4 zur Verfügung. In älteren PHP-Versionen muss auf filter_var($url, FILTER_VALIDATE_URL) oder ähnliche Mechanismen zurückgegriffen werden, die jedoch nicht vollständig dem WHATWG-Standard entsprechen.

Da InvalidUrlException von \ValueError erbt, kann sie auch über einen catch (\ValueError $e)-Block abgefangen werden, was bei allgemeiner Fehlerbehandlung nützlich sein kann.