Archiv verlassen und diese Seite im Standarddesign anzeigen : Reguläre Ausdrücke
Ich möchte in einem String bestimmte Zeichen ersetzen. Und zwar versuche ich, dass "rnd,100,200" automatisch durch den Zufallswert aus der Funktion rand(100,200) ersetzt wird. Mein Ansatz sieht so aus:
echo preg_replace("rnd,/^[0-9]$/,/^[0-9]$/", rand($1,$2), $text);
Ist alles andere als gelungen. Aber ich bekomme schon den Suchteil nicht anständig hin. Vielleicht hat das ja schon mal jemand gemacht. Würde mir viel Sucharbeit und Nerven sparen.
Vielen Dank im voraus !!
sh2
xabbuh
12.10.2005, 16:19:02
Ein entsprechender regulärer Ausdruck könnte so aussehen:
<?php
$regex = '#rnd,(\d+),(\d+)#';
$str = preg_replace($regex, rand($1, $2), $str);
?>
Danke, werde ich morgen gleich mal ausprobieren.
Ich steh' immer noch voll aufm Schlauch ;-(
Irgendwie liegt mir das Zeug nicht so. Bin wirklich auf Hilfe angewiesen ...
In $TK_leftC (Array) steht unter anderem Zufall:1000-10000
Ersetzen kann ich das problemlos. Aber nicht durch rand(1000,10000)
$regex = '#Zufall:(\d+)-(\d+)#';
$TK_leftC = preg_replace($regex, strval(rand(\$1,\$2)), $TK_leftC);
Vielen, vielen Dank für Eure Hilfe !
sh2
Ich habe das jetzt soweit hinbekommen, dass folgendes klappt:
$TK_leftC = preg_replace('#Zufall:(\d+)-(\d+)#', "rand($1,$2)", $TK_leftC);
An entsprechender Stelle steht jetzt rand(1000,10000) wenn vorher Zufall:1000-10000 enthalten war.
Ich will aber, dass das Ergebnis der rand-Funktion ausgegeben wird:
$TK_leftC = preg_replace('#Zufall:(\d+)-(\d+)#', rand($1,$2), $TK_leftC);
Das funktioniert aber nicht!
Kann mir da jemand weiter helfen??
Thanks
xabbuh
13.10.2005, 18:13:26
Versuch es mal, wenn du preg_replace_callback() (http://www.php.net/preg_replace_callback) verwendest:
<?php
function Zufall($matches)
{
return mt_rand($matches[1], $matches[2]);
}
print preg_replace_callback('#Zufall:(\d+)-(\d+)#', 'Zufall', $str);
?>
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.