![]() |
[PHP] preg - jedes Match mit anderem Wert ersetzen
Moin!
Ich stehe gerade vor folgendem Problem: ich habe einen Text, in dem ich jedes Vorkommen einer Regular Expression mit einem jeweils individuellen Wert ersetzen will (in meinem Fall GUIDS). Dazu habe ich das versucht:
Code:
wobei MyClass::NewGUID(); eine static public funciton ist. Es scheint jedoch so als würde nicht bei jedem MAtch die Callback-Funktion aufgerufen, wie ich das eigentlich erwartet hatte, denn alle Matches werden mit dem gleichen Wert ersetzt :(
if ($this->ReplacementMethod == self::REPLACE_ALL_UIDS) {
$this->FileStream = preg_replace_callback( $this->ReplacementMask, create_function( '', 'return MyClass::NewGUID();' ), $this->FileStream ); } Woran liegt das, bzw wie kann ich es lösen? |
Re: [PHP] preg - jedes Match mit anderem Wert ersetzen
*push*
|
Re: [PHP] preg - jedes Match mit anderem Wert ersetzen
*Nochmal push :( *
|
Re: [PHP] preg - jedes Match mit anderem Wert ersetzen
Hallo Melfin,
die Callbackroutine wird nur einmal aufgerufen und man erhält dann im Übergabeparameter ein Array mit den Treffern. Du must deine Ersetzung auf eine begrenzen und dann solange Ersetzen, bis nichts mehr ersetzt wurde. Dann kannst du auch die Callbackroutine weglassen...
Code:
Gruss
$i = 0;
do { $this->FileStream = preg_replace( $this->ReplacementMask, MyClass::NewGUID(), $this->FileStream, 1, $i ); } while($i > 0); Thorsten |
Re: [PHP] preg - jedes Match mit anderem Wert ersetzen
Zitat:
Zitat:
Dass preg_replace einen Index-Parameter hat wusste ich irgendwie auch nicht :stupid: Das macht die Sache einfacher :mrgreen: Merci! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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