![]() |
PHP: Problem mit eregi_replace
Hallo,
ich möchte einen Teilstring aus eregi_replace (also \\1, \\2, etc.) in einer Funktion zu verändern, weiß aber nicht, wie ich ihn an die Funktion übergeben kann. Folgender Code ist Sinnlos, dient aber nur zur Veranschaulichung eines Weiteren Problems, was beim Testen aufgetreten ist:
Code:
';
<?
function funktionsaufruf($text) { echo $text; return $text; } $post = '[code]hallo $post = eregi_replace("\\[code\\]([^\\[]*)\\[/code\\]", funktionsaufruf('\\1'), $post); echo $text; ?>[/code] Innerhalb der Funktion wird '\1' ausgegeben und das 2. Echo gibt 'hallo' aus. Wenn ich die Funktion wie folgt verändere wird jedoch 'blub' ausgegeben:
Code:
Nach der ersten Ausgabe dachte ich, dass zwar in der Funktion die Variable einen falschen Wert hat, aber irgendwie die Funktion in eregi_replace nicht berücksichtigt wird. Die 2. Ausgabe zeigt ja aber, dass die Funktion Einfluss auf eregi_replace nimmt.
<?
function funktionsaufruf($text) { $text = 'blub'; return $text; } ?> Wäre schön, wenn mir das jemand erklären könnte und mir sagen könnte, wie ich nun den wert von \\1 an die Funktion weiter geben kann. Vielen Dank MfG Niels |
Re: PHP: Problem mit eregi_replace
Zitat:
Du mußt also erstmal ein match machen, dann kannst du die zu ersetzenen neuen Texte zusammenbauen und dann nochmal ein replace drüber laufen lassen, anders wird es nicht gehen. |
Re: PHP: Problem mit eregi_replace
Hi,
danke erstmal. Dachte, dass \\1, \\2 ... sowas wie Konstanten sind, wusste nicht, dass ich sie nicht an Funktionen weitergeben kann. Da werd ich das ganze eben etwas anders machen müssen. MfG Niels |
Re: PHP: Problem mit eregi_replace
Bitte nutze nur noch die die schnellere Variante
![]() Du kannst damit auch an eine Funktion weitergeben und zwar so:
Code:
Die Methode mit \\1, \\2... nennt man Backreferencing, da sich das in diesem Fall auf das mit der ersten Klammer (also das (.*?)) zurückbezieht.
$var = preg_replace('#\[code\](.*?)\[/code\]#ie', 'deine_funktion("\\1")', $var);
mfG, titus |
Re: PHP: Problem mit eregi_replace
OK Danke, funktioniert.
MfG Niels |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz