Hallo,
Danke für Deine Antwort! Sorry für meinen Fehler.
Ich möchte lieber preg_match verwenden.
Warum?
Kleine zusätzliche Frage, wie erweitere ich den Code, wenn ich möchte, dass er alles zwischen http:// und ? kopiert, aber nur wenn dort das Suchmuster "test" vorkommt?
auf das Arrayelement mit dem Schlüssel host des Rückgabewertes von parse_url die Funktion substr() anwenden :-)
Ok, Du willst ja preg_match() verwenden:
Du suchst die Zeichenfolge http:// (wobei Du den Slash escapen musst, wenn Du den Slash als Delimiter verwendest), gefolgt von dem was Du einfangen willst - und deswegen in runde Klammern setzt - wobei dieses aus einer beliebig vielen (auch null) beliebigen Zeichen besteht, gefolgt von der Zeichenkette test, gefolgt von beliebig vielen (auch null) beliebigen Zeichen. Nicht mehr fangen willst Du das folgende Fragezeichen, wobei Du davon ausgehst, dass in Deiner Zeichenkette das Fragezeichen nur einmal vorkommt:
$result = array();
$haystack = 'http://test.example.org?id=1';
$pattern = '/http:\/\/(.*test.*)\?/i';
# / # wir beginnen den Ausdruck (jeder andere Delimiter wäre besser)
# http:\/\/ # gefolgt von http://
# ( # wir beginnen einzufangen
# .* # beliebig viele (auch 0) beliebige Zeichen
# test # die Zeichenfolge test
# .* # beliebig vielen (auch 0) weiteren beliebigen Zeichen
# ) # wir beenden das Einfangen
# \? # gefolgt von einem Fragezeichen
# /i # wir suchen ohne Beachtung der Groß- und Kleinschreibung
preg_match($pattern, $haystack, $result);
// Es ist nicht unbedingt eine gute Idee, die Variable, in der wir suchen,
// mit dem Inhalt des Ergebnisses zu überschreiben.
// Testausgabe unter Beachtung des HTML-Kontextes
// in einem pre-Element zur besseren Lesbarkeit
echo "<pre>\n";
echo htmlspecialchars(print_r($result, true));
echo "</pre>\n";
Ach ja:
modifiziere bitte den Inhalt von $haystack, so dass dieser mehr als ein Fragezeichen enthält:
$haystack = 'http://test.example.org?id=1?foo=bar';
und schau Dir das Resultat an ...
gierig und genügsam wären Stichwörter für Deine Suche.
Freundliche Grüße
Vinzenz