Mit PHP preg_match() Teile einer URL auslesen
Ich würde gerne in einer URL per preg_match() eine weitere URL auslesen. Die gelieferte URL sieht ungefähr so aus:
http://www.example.com/url?test=1&url=http://www.zweiteurl.com/seite.html
Ich weiß, dass das nicht unbedingt schwer ist, aber ich kriegs nicht hin. Und das trotz Hilfe von http://php.net/manual/de/function.preg-match.php
Please help ;)
bearbeitet am 15.02.2012
Warum via pregmatch(), was Last kostet. Die URL Daten sind in $GET, $REQUEST und $SERVER enthalten?
– frank am 16.02.2012Wie schon unten geschrieben verstehe ich die Frage so, dass die URL als String vorliegt und zerlegt werden muss. Sie wird nicht aufgerufen, damit ist auch kein Zugriff via $_GET möglich. Richtig Tilo?
– timo_m am 16.02.2012Leider weiß ich nicht, ob man Zugriff hat oder nicht (die URL kommt von Google). Ich bin PHP Anfänger und noch geht es nicht darum, wie die beste und schnellste Möglichkeit ist, etwas umzusetzen, sondern wie ich es überhaupt zum Laufen bekomme. Und so hat es wunderbar funktioniert!
– Tilo am 16.02.2012Antworten
parse_url kenn ich nicht, aber mit preg_match würde ich es etwa so machen:
$treffer = array(); $muster = '@url=(http://[^&]+)@i'; $url = 'http://www.example.com/url?test=1&url=http://www.zweiteurl.com/seite.html'; $anzahl = preg_match($muster, $url, $treffer);
Das Suchmuster sucht nach dem ersten Vorkommen von 'url=http://[irgendwas ausser &]' und schreibt einen möglichen Treffer in das treffer-Array. Die at-Zeichen dienen hier als Begrenzer des Suchmusters.
Bei dem regulären Ausdruck bin ich mir nicht 100%ig sicher, aber die Idee ist preg_match mitzuteilen welche Treffer (in den runden Klammern) in das treffer-Array gespeichert werden sollen.
Das treffer-Array sollte dann etwa so aussehen:
Array(
[0] => url=http://www.zweiteurl.com/seite.html,
[1] => http://www.zweiteurl.com/seite.html
) Ohhh ich habe gesehen, vielleicht hilft da auch parse_url()
Irgendjemand, keiner?!
Doofe Zwischenfrage meinerseits, aber wie schon frank meinte wozu eine Auswertung, wenn man einfach mit $_GET['url'] auf den Wert zugreifen kann?
Ich glaube die Frage ist gar nicht so doof, weil es nicht darum geht den Parameter per $GET aus der URL zu lesen sondern eine vorliegende URL zu zerlegen. Wenn ich das also richtig verstehe, dann wird die URL so nicht aufgerufen sondern liegt als String vor. Damit ist der Zugriff via $GET nicht möglich.
– timo_m am 16.02.2012Das ist halt die Frage, bisher kann man einer der Antworten nur entnehmen, daß die URL von Google kommt. Damit ist aber immer noch nicht geklärt, auf welchem Weg sie denn überhaupt kommt.
– jteriete am 17.02.2012Deine Antwort
Bereits registriert? Bitte logge dich vor dem Antworten ein.

Von Usern veröffentlichte Inhalte stehen unter der
Ich bin auch der Meinung, dass parse_url() da die bessere Wahl ist. Wesentlich unkomplizierter und einfach weniger Code.
– moody am 16.02.2012