Hallo PHP-Gemeinde,
ich hänge an einem RegExp fest. Das Ziel ist eigentlich ganz einfach:
Alle Vorkommen von <br /> innerhalb von [PRE] und [/PRE] sollen durch \n\r ersetzt werden. Außerdem soll auch das [PRE] und [/PRE] durch HTML-Code ersetzt werden. Aber leider bekomme ich das nicht hin. Folgendes habe ich versucht:
Alles leider ohne Erfolg. Was ich nicht ganz verstehe: Als Rückgabewerte erhalte ich von $1 oder in einer andere Syntax von \1 absolut gar nichts.
Falls mir jemand helfen kann, würde ich mich freuen, wenn er / sie mir das auch erklären würde *G*. Sonst muss ich wieder nerven, wenn ich etwas ändern will![Wink](https://www.php-resource.de/forum/core/images/smilies/wink.gif)
Und dann habe ich noch eine weitere Frage, für die ich keinen neuen Thread eröffnen will, weil es nicht so wichtig ist:
Gibt es eine Möglichkeit, die Rückgabewerte aus einer Ersetzung in ein Array zu schreiben? Also z. B. folgender String:
"Ich bin [X]text1[/X] und ich bin [X]text2[/X] und ich [X]text3[/X] usw."
Nun sollen alle Passagen, die zwischen [X] und [/X] stehen, in einem Array abgelegt werden. Zugleich sollen Platzhalter in den String eingefügt werden. Das Ergebnis wäre dann z. B.:
$arr=(1 => "text1", 2 => "text2", 3 => "text3")
und der Ergebnisstring: "Ich bin SPA1 und ich bin SPA2 und ich SPA3 usw."
So könnte ich nun z. B. den String durch diverse RegExp schicken, ohne dass meine von [X] und [/X] eingegrenzten Textstellen beeinflusst werden. Anschließend könnte ich dann wieder die SPAs durch Werte aus dem Array ersetzen, mir sprintf oder preg_replace.
Aber diese Rückgabewerte kann man anscheinend nur mit preg_match in ein Array führen; zumindest habe ich keine andere Möglichkeit gefunden.
Ich bedanke mich schon im Vorraus,
DasD
ich hänge an einem RegExp fest. Das Ziel ist eigentlich ganz einfach:
Alle Vorkommen von <br /> innerhalb von [PRE] und [/PRE] sollen durch \n\r ersetzt werden. Außerdem soll auch das [PRE] und [/PRE] durch HTML-Code ersetzt werden. Aber leider bekomme ich das nicht hin. Folgendes habe ich versucht:
PHP-Code:
$vari=preg_replace("#\[PRE\](.*?)(\<br /\>)?(.*?)\[/PRE\]#si","<pre>$1\n\r$3</pre>",$vari);
$vari=preg_replace("#\[PRE\](.*?)(\<br /\>?)(.*?)\[/PRE\]#si","<pre>$1\n\r$3</pre>",$vari);
$vari=preg_replace("#\[PRE\]((.*)(\<br /\>)(.*)?)\[/PRE\]#si","<pre>$1\n\r$3</pre>",$vari);
$vari=preg_replace("#\[PRE\]((.*)(\<br /\>)(.*))?\[/PRE\]#si","<pre>$1\n\r$3</pre>",$vari);
Falls mir jemand helfen kann, würde ich mich freuen, wenn er / sie mir das auch erklären würde *G*. Sonst muss ich wieder nerven, wenn ich etwas ändern will
![Wink](https://www.php-resource.de/forum/core/images/smilies/wink.gif)
Und dann habe ich noch eine weitere Frage, für die ich keinen neuen Thread eröffnen will, weil es nicht so wichtig ist:
Gibt es eine Möglichkeit, die Rückgabewerte aus einer Ersetzung in ein Array zu schreiben? Also z. B. folgender String:
"Ich bin [X]text1[/X] und ich bin [X]text2[/X] und ich [X]text3[/X] usw."
Nun sollen alle Passagen, die zwischen [X] und [/X] stehen, in einem Array abgelegt werden. Zugleich sollen Platzhalter in den String eingefügt werden. Das Ergebnis wäre dann z. B.:
$arr=(1 => "text1", 2 => "text2", 3 => "text3")
und der Ergebnisstring: "Ich bin SPA1 und ich bin SPA2 und ich SPA3 usw."
So könnte ich nun z. B. den String durch diverse RegExp schicken, ohne dass meine von [X] und [/X] eingegrenzten Textstellen beeinflusst werden. Anschließend könnte ich dann wieder die SPAs durch Werte aus dem Array ersetzen, mir sprintf oder preg_replace.
Aber diese Rückgabewerte kann man anscheinend nur mit preg_match in ein Array führen; zumindest habe ich keine andere Möglichkeit gefunden.
Ich bedanke mich schon im Vorraus,
DasD
Kommentar