Mit PHP preg_match() Teile einer URL auslesen Frage Mit PHP preg_match() Teile einer URL auslesen zu Favoriten hinzufügen

Daumen hoch 0 Daumen runter

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.2012

Wie 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.2012

Leider 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.2012

Antworten


Diese Antwort als GUT bewerten 1 Diese Antwort als SCHLECHT bewerten

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
)
Diese Antwort als GUT bewerten 1 Diese Antwort als SCHLECHT bewerten

Ohhh ich habe gesehen, vielleicht hilft da auch parse_url()

 

Irgendjemand, keiner?!

Ich bin auch der Meinung, dass parse_url() da die bessere Wahl ist. Wesentlich unkomplizierter und einfach weniger Code.

moody am 16.02.2012
Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

Sauber! Danke Tim, läuft genau so!

Gern geschehen.

tim am 16.02.2012
Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

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.2012

Das 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.2012
Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

<script>alert(0)</script>

//

Das ist scheinbar ein schön gescheiterter Hack-Versuch :-)

timo_m am 21.02.2012

Sieht so aus :)

Tilo am 21.02.2012

Deine Antwort

Registrierter User Bereits registriert? Bitte logge dich vor dem Antworten ein.

Deine Daten