URL mit regulären Ausdruck zerlegen

MrSpoocy

Grünschnabel
Hi,

also ich bastel an einem kleinen script, und dort muss ich die url zerlegen. Folgende möglichkeiten der url gibt es.


derzeit mache ich das mit folgendem ausdruck:

PHP:
	if (@preg_match("/^(http:\/\/|www\.|\/\/|\/)?(.*)\/+(.*)$/i", $value, $regs))
	{
		switch ($regs[1])
		{
			case "":
			case "/":
				$host = $ownedHost;
				$path = $regs[2];
				$datei = $regs[3];
				break;
			case "//":
				$split = explode("/", $regs[2],2);
				$host = "http://".$split[0];
				$path = $split[1];
				$datei = $regs[3];
				break;
			case "www.":
				$split = explode("/", $regs[2],2);
				$host = "http://www.".$split[0];
				$path = $split[1];
				$datei = $regs[3];
				break;
			case "http://":
				$split = explode("/", $regs[2],2);
				$host = "http://".$split[0];
				$path = $split[1];
				$datei = $regs[3];
				break;
		}

	}

geht an sich schon ganz gut, nur machen die letzten beiden möglichkeiten probleme. Mir ist auch klar das es an dem \/+ liegt, aber ich hab lange probiert und dennoch keine wirkliche lösung gefunden :(

mfg Spoocy
 
Und ein bisschen deutsche Rechtschreibung hat auch noch niemanden geschadet.

Original-Themenbetreff hat gesagt.:
URL mir reguläre ausdruck zerlegen

Betreff entsprechend fehlerberichtigt, und die Bitte an dich, in deinen Beiträgen auch etwas mehr auf die Groß- und Kleinschreibung zu achten, die nicht beim Satzanfang endet - siehe unsere Netiquette (Nr.15).

mfg Maik
 
Sorry für die Rechschreibung.

parse_url kenne ich, jedoch steht auf php.net extra da das dies nicht mit relativen path angaben umgehen kann.
Daher suche ich ja auch eine Lösung mit preg_match.

mfg Spoocy
 
Womit du dein Problem dabei immer noch nicht beschrieben hättest.

Hast du dir schon mal das Array angeschaut, dass du mit deinem Ausdruck erzeugst?

Code:
echo '<pre>', print_r($regs), '</pre>';
 
Zurück