Regexp: einen Ausdruck genau einmal ersetzen
Günther S
- php
Hallo zusammen,
ich möchte mithilfe von preg_replace() einen bestimmten Ausdurck ("\n") genau einmal durch einen anderen ("<br>") ersetzen lassen.
Also im Prinzip möchte ich dasselbe erreichen, was die Funktion nl2br() schon macht, nur soll eben "\n\n\n" nicht zu "<br><br><br>" werden, sondern nur zu "<br>".
Ich bin mit RegExp noch ziemlich unerfahren und wäre auch dankbar über Vorschläge von guten Tutorials mit einer schrittweisen Einführung in dieses Gebiet.
Gruß,
Günther S
Tag Günther.
Also im Prinzip möchte ich dasselbe erreichen, was die Funktion nl2br() schon macht, nur soll eben "\n\n\n" nicht zu "<br><br><br>" werden, sondern nur zu "<br>".
Verwende einen entsprechenden Quantifier.
Siechfred
Hallo Siechfried,
Verwende einen entsprechenden Quantifier.
das habe ich schon versucht, nämlich so:
$str = preg_replace('#\n{1}#', '<br>', $str);
Aber \n\n\n wird damit trotzdem durch <br><br><br> ersetzt.
Wo ist da der Wurm?
Gruß,
Günther
Tag Günther.
$str = preg_replace('#\n{1}#', '<br>', $str);
> Aber \n\n\n wird damit trotzdem durch <br><br><br> ersetzt.
> Wo ist da der Wurm?
Wie ich schrieb: im Quantifier, {1} bedeutet nämlich "genau 1 mal". Willst du mehr als 1 mal, dann nimm entweder {1,} oder gleich "+". Aber das steht alles auf der von mir verlinkten Seite :-)
Übrigens, "\n" ist nicht auf allen Systemen der Zeilenumbruch, siehe hierzu [Plattformübergreifendes Handling von Zeilenumbrüchen](http://aktuell.de.selfhtml.org/artikel/cgiperl/zeilenumbruch/index.htm).
Siechfred
--
[Codeschnipsel gefällig?](http://sniplets.anaboe.net) || [Wieder Online: Existenzgründer-FAQ](http://www.steuerwerkstatt.de/existenzgruendung.php)
hi,
$str = preg_replace('#\n{1}#', '<br>', $str);
"Wo immer \_genau ein\_ \n auftritt, ersetze mir dieses durch <br>."
> Aber \n\n\n wird damit trotzdem durch <br><br><br> ersetzt.
> Wo ist da der Wurm?
Dass "\_genau ein\_ \n auftritt", und durch <br> ersetzt wird, passiert hier drei mal hintereinander.
Wenn du dir die von Siechfred verlinkte Seite noch mal anschaust, findest du dort auch den Quantifier +, der für "1 oder mehrere Male" steht.
Also nutze ein Suchmuster wie '#\n+#', um "ein oder mehrere aufeinanderfolgende \n" zu ersetzen.
gruß,
wahsaga
--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }