Der definitive PHP-URL-Parser

9

Bevor Sie mir sagen, dass ich parse_url verwenden soll, ist es nicht annähernd gut genug und hat zu viele Fehler. Es gibt viele Fragen zum Thema Parsing-URLs, die hier zu finden sind, aber fast alle analysieren nur bestimmte URL-Klassen oder sind auf andere Weise unvollständig.

Ich suche nach einem definitiven RFC-kompatiblen URL-Parser in PHP, der zuverlässig alle URLs verarbeitet, die ein Browser wahrscheinlich findet. Darin schließe ich ein:

  • Seiteninterne Links # , #title
  • Seitenbezogene URLs blah/thing.php
  • Site-relative URLs /blah/thing.php
  • Anonym-Protokoll-URLs //ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js
  • Callto-URLs callto:+442079460123
  • Datei-URLs file:///Users/me/thisfile.txt
  • Mailto-URLs mailto:[email protected]?subject=hello , mailto:?subject=hello

und Unterstützung für alle üblichen Schema / Authentifizierung / Domain / Pfad / Abfrage / Fragment usw., und brechen Sie alle diese Elemente in ein Array mit zusätzlichen Flags für relative / schemaless URLs. Im Idealfall würde es einen URL-Reconstructor (wie http_build_url) geben, der die gleichen Elemente unterstützt, und ich möchte auch, dass die Validierung angewendet wird (dh sie sollte eine URL, die ungültig ist, bestmöglich erraten, aber markieren als solche, wie Browser tun.)

Diese Antwort enthielt einen verlockenden Fermat-ähnlichen Hinweis auf ein solches Biest, aber es geht eigentlich nirgendwohin.

Ich habe in allen wichtigen Frameworks nachgesehen, aber sie scheinen nur dünne Wrapper um parse_url zu bieten, was normalerweise ein schlechter Start ist, da es so viele Fehler macht.

Also, existiert so etwas?

    
Synchro 02.10.2012, 09:29
quelle

1 Antwort

3

Nicht sicher, wie viele Fehler parse_url() hat, aber das könnte helfen:

  

Da der "First-Match-Wins" -Algorithmus identisch ist mit dem "Greedy"      Disambiguierungsmethode, die von regulären POSIX-Ausdrücken verwendet wird      Natürlich und alltäglich, um einen regulären Ausdruck für die Analyse der      potenzielle fünf Komponenten einer URI-Referenz.

     

Die folgende Zeile ist der reguläre Ausdruck für das Zerlegen von a      wohlgeformte URI-Referenz in seine Komponenten.

%Vor%

Quelle: Ссылка

Es teilt den Ort als:

%Vor%

Zum Neuaufbau könnten Sie Folgendes verwenden:

%Vor%     
Ja͢ck 02.10.2012 09:34
quelle

Tags und Links