suit: Aufsplitten einer URL

Beitrag lesen

Kann ich das so benutzen oder habe ich etwas als gegeben angesehen was nicht der Fall ist?

Nicht wirlich - du solltest dich in erster Linie mit den grundlegenden syntaktischen Gegebenheiten von URLs befassen - das Lesen des Wikipedia-Artikels zu diesem Thema hätte dir schon einige Fehler erspart.

Identifizierbar durch das Vorkommen von "://" in der URL.

Das ist dein erstes Problem, nicht in jedem URL kommt das notwendierweise vor:

mailto:random@example.com

Dann kommen mögliche Subdomains

Das ist dein 2. Problem: Einerseits kommen danach optional irgendwelche benutzername und passwort, andererseits kann der Hostname auch ein ein glied besitzen, eine IP-Adresse sein oder aber mit einem port enden

http://foo:bar@example.com/
http://invalid/
http://example.com:80/
http://foo:bar@invalid:443/

Alles kein Problem.

Sobald ein "." zwischen den "/" liegt wird es vermutlich der Dateiname mit Erweiterung sein.

/foo.bar/baz.de.html
/foo/bar/baz/
/foo
/
/index.php/foo/bar

Alles gültige Pfade: aufgrund deiner Vorstellung von Pfaden - besonders hinsichtlich der "Ordner und Dateinamen"-Sache hast du aber hier ein Problem beim Parsen.

Kommt danach ein "?" gibt es GET-Parameter die immer getrennt sind durch "&". Und Variable und Wert sind getrennt durch "=".

Auch wieder falsch

wert1&wert2&wert3
wert;parameter=wert2
wert
wert1=1&wert2=2

Alles gültige querystrings - es müssen nicht notwendigerweise "Werte" nach den "Parametern" vorhanden sein, noch müssen notwendigerweise durch ein & separiert sein - auch hier sind verschiedene Trennzeichen vorgesehen - genauergesagt ; und &.

Danach kommt ggf. noch das Fragment - das sollte aber wohl beim Server nicht ankommen.

In Summe: Du hast nicht beschrieben was du eigentlich willst und vor allem gehst davon aus, dass das noch nie jemand gemacht hat und versuchst dir jetzt ohne dich in die technischen Grundlagen eingearbeitet zu haben irgend eine Funktion zusammenzustopseln. Das gute daran ist, dass du dich vorher erkundist, ob das nicht gegebenenfalls zu Fehlern führt - und das ist imho ein sehr wichtiger Schritt, denn wie du siehst ist dein Ansatz vermutlich im Grunde falsch.

Wenn du rausrückst mit welcher Technik du URLs zerlegen willst und aus welcher Quelle diese stammen kann man dir her weiterhelfen - fast jede Sprache stellt hierfür bereits etwas fertiges zur Verfügung:

PHP stellt hier z.B. parse_url() und parse_str() zur Verfügung um den URL sowie den Querystring zu zerlegen - den hostnamen kann man dann explode() (wenn man die Punkte nicht braucht) oder preg_split() zerlegen (oder die punkte behalten will, da sie zu den gliedern des Hostnamens dazugehören).