preg_replace Ausgabe
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
antwort
ausdruck
ausdrcken
begrenzung
beide gefundenen strings
beispiel
datei
fragezeichen
gel
genannten funktion
gieren
graph
klammern
mehrfaches vorkommen
punkten
sache
stern
variable
versuch
-
Hi,
ich spiele mich gerade mit der oben genannten Funktion und habe ein kleines Problem:
Wenn ich es durchlaufen lasse, dann kommt immer zweimal es klappt!
Wieso ist das so?
Ich habe folgendes Script:
$url = "http://www.lima-city.de"; $ersetzen = "es klappt!"; $suche = "^(.*)^"; echo preg_replace($suche,$ersetzen,$url);
Link: http://nowayout.milten.lima-city.de/PHP/preg_replace.php
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hiho nowayout!
Wenn du Ausdr?cke klammerst, dann musst du dem Ersetzen-String mitteilen, welcher geklammerte Ausdruck ersetzt werden soll. Das macht man mit "$1" f?r den Ausdruck in der ersten Klammer:
$suche = '^(.*)^';
$ersetzen = 'So klappt es: $1';
$url = 'http://www.lima-city.de';
echo preg_replace($suche,$ersetzen,$url);
http://de.php.net/manual/de/function.preg-replace.php
MfG
alopex -
Punkt hei?t bei regul?ren Ausdr?cken beliebiges Zeichen.
Siehe da: http://www.drweb.de/php/regulaere-ausdruecke.shtml
und der Stern steht f?r mehrfaches Vorkommen.
Hab mal einen Punkt gel?scht, hat aber nichts gebracht.
Um nach einem Punkt zu suchen m?sste man ihn escapen, also so schreiben: \. -
Hallo nowayout!
Du hast recht, es ist etwas komplizierter. Ich versuchs mal, zu erkl?ren:
Regul?re Ausdr?cke sind "gierig", d.h. sie versuchen den zum Suchmuster passenden String zu finden, der so lang wie m?glich ist. Mit einem Suchmuster "/(.*)/" (ein String der L?nge Null bis maximale L?nge mit beliebigen Zeichen) passiert daher Folgendes:
1. Es wird ein passender String gefunden, n?mlich der gesamte zu durchsuchende String $url.
2. Es wird ein weiterer passender String gefunden, n?mlich der Leerstring vom Ende von $url bis zum Ende von $url.
Beide gefundenen Strings werden ersetzt. Daher kommt das Ersetzungsergebnis zweimal zu Stande. Ich habe mal den Ersetzen-String etwas abge?ndert, damit man sieht, das tats?chlich ein Leerstring ausgegeben wird ('So klappt es:($1)'). Das kommt raus:
So klappt es:(http://www.lima-city.de)So klappt es:()
Wenn du die Gier von RegExp's verhindern willst, musst du Modifikatoren setzen, die das verhindern. Ein Beispiel ist das Fragezeichen '?'. Du kannst aber auch die Suche mit den String-Anfangs- und String-Ende-Zeichen '\A' und '\Z' begrenzen.
Was soll dein regul?rer Ausdruck eigentlich erreichen? Das ist mir n?mlich bisher noch nicht ganz klar. Beschreib mal, was er tun soll, dann kann man besser helfen.
MfG
alopex -
Hi Alopex,
ich will mit dem "einfachen" Ausdruck mal das ganze RegExp Zeug kennen lernen, da ich es f?r ein Projekt brauche. So dachte ich halt, fang ich mit was einfachem an.
2. Es wird ein weiterer passender String gefunden, n?mlich der Leerstring vom Ende von $url bis zum Ende von $url.
Das versteh ich nicht!
Vom Ende bis zum Ende ist meiner Meinung nach einfach nichts. Begrenzen will ich das nicht, da einfach alles was drinsteht in der Variable ?berschrieben werden soll. Da ich in diesem Fall nicht wei?, welche URL drin steht kann ich auch keine Begrenzungen machen. Ich habe mal [:graph:] versucht, aber es hat irgendwie auch nicht geklappt. :(
LG
nwo -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage