Ich habe Jetzt mal das:
[php]
$satz = „Hallo wie geht es Herrn Xaver Meixr?“;
$satz = preg_replace(); // Wie muss ich es machen, dass das x bei Meixr durch ein e ersetzt wird?
//Wen ich als Suchmuster x eingebe, dann wird ein anderes
//Wort auch ein e haben, statt ein x.
//Also ein blödes Beispiel, aber ich habe kein besseres gefunden.
//Wei mache ich das jetzt?
[/php]
MfG, matibaski
wollen wir das letzte x ersetzen.
Deshalb sieht unser Suchmuster so aus:
(.*)x(.+)$
(.) bedeutet beliebige Zeichen → „.“ so oft wie möglich "" zusammengefasst in Gruppe 1 → das bedeuten die Klammern
( = Anfang Gruppe 1
. = Beliebiges Zeichen
= so oft wie möglich
) = Ende Gruppe 1
dann haben wir das x das wir Später ersetzen wollen
Jetzt kommt Gruppe 2, + bedeutet hier - so wenig Zeichen wie möglich
( = Anfang Gruppe 2
. = Beliebiges Zeichen
= so selten wie möglich
) = Ende Gruppe 2
als letztes gibt es noch das „$“ Zeichen.
Es bedeutet, dass hier der String zu ende sein muss.
Da unsere erste Gruppe möglichst viele Zeichen umfasst, wird sie bis zum letzten x gelten, dass ist dann der längste Bereich der hineinpasst. Dann kommt unser x und dann die restlichen zeichen in Gruppe 2
Das ersetzen wir nun
$1e$2
„$1“ ist der Inhalt aus Gruppe 1 dann haben wir ein „e“ (Dort hatten wir das x) und dann kommt der Inhalt aus Gruppe 2 „$2“
stimmt fasst alles, nur + bedeutet mindestens 1 mal. Damit wird das x bei „Max“ z.B. nicht mehr ersetzt. Wenn du aber den * nimmst, geht es wieder, da der erste * alles bis zum letzten x mitnimmt.
Vielen Dank, habe es kapiert.
Nun wenn ich vom Gästebuch die Url übermittle, und zwar so:
[ url ]www.hallo.de[ / url ] // Ohne abstände
Wie will dann die Funktion herausfunden, was gepostet wurde?
Beim Beispiel konnte es man wissen, was ersetzt werden musste, jetzt zwar auch, doch es hat was anderes dazwischen.
Ich muss ja iwie sagen, suche von [ bis ], dann den Rest in Ruhe lassen, bis ein [ kommt und dann mit einem ] endet.
Wie mache ich das?
Ich bin zwar mit einfachen Sätzen am ausprobieren, doch ich bringe es mit der URL nicht fertig.
@ Frank:
Bei deiner 1. Antwort sah ich noch 2 # und ein is.
Was hatten die für ne Funktion?
die # sind delimeter (beliebiges Zeichen, muss nur am Anfang und Ende das gleich seien und muss im Suchmuster escaped werden), sie begrenzen einfach nur den suchstring, is sind die modifier
i = case insensitive
s = bei \n nicht abbrechen
nun zu deiner [noparse] www.google.de [/noparse]
[PHP]
$string = „bla bla bla www.google.de bla bla bla“;
$pattern = „%[url](.*)[/url]%isU“;
$replace = „<a href="http://($1)">($1)“;
$string = preg_replace($pattern,$replace,$string);
echo $string;
[/PHP]