Mit PHP preg_match() Teile einer URL auslesen

15.02.2012 20:34 Uhr

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 ;)

5 Antworten

#1

15.02.2012 21:01 Uhr

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

 

Irgendjemand, keiner?!

#2

15.02.2012 21:15 Uhr

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
)

#3

15.02.2012 21:35 Uhr

Sauber! Danke Tim, läuft genau so!

#4

16.02.2012 09:17 Uhr

Doofe Zwischenfrage meinerseits, aber wie schon frank meinte wozu eine Auswertung, wenn man einfach mit $_GET['url'] auf den Wert zugreifen kann?

#5

21.02.2012 12:49 Uhr

<script>alert(0)</script>

//

Ähnliche Fragen



Datenschutzerklärung · Impressum