mit preg_replace nacheinander verscheidene werte
Mazze
- php
Hallo zusammen,
preg_replace erlaubt leider folgendes nicht:
------------
$zeichenkette = 'XXX und XXX wollen XXX';
$suchmuster = 'XXX';
$ersetzungen[0] = 'Peter';
$ersetzungen[1] = 'Gabi';
$ersetzungen[2] = 'Kuchen';
echo preg_replace($suchmuster, $ersetzungen, $zeichenkette);
-------------
da $ersetzungen ein array ist und $suchmuster ein string. Kennt jemand eine einfache Lösung, ohne dass ich sowas umständliches wie
$suchmuster[0] = 'XXX';
$suchmuster[1] = 'XXX';
$suchmuster[2] = 'XXX';
angeben muss?
Vielen Dank für die Hilfe!
Hallo Mazze.
preg_replace erlaubt leider folgendes nicht:
$zeichenkette = 'XXX und XXX wollen XXX';
$suchmuster = 'XXX';
$ersetzungen[0] = 'Peter';
$ersetzungen[1] = 'Gabi';
$ersetzungen[2] = 'Kuchen';echo preg_replace($suchmuster, $ersetzungen, $zeichenkette);
Mein Vorschlag:
$zeichenkette = 'XXX und XXX wollen XXX';
$suchmuster = 'XXX';
$ersetzungen = array('Peter', 'Gabi', 'Kuchen');
echo '"' . $zeichenkette . '"' . "\n";
for ($i = 0, $start = 0;
($start = strpos($zeichenkette, $suchmuster, $start)) !== false;
++$i, ++$start) {
$zeichenkette = substr_replace($zeichenkette,
$ersetzungen[$i],
$start, strlen($suchmuster));
}
echo '"' . $zeichenkette . '"';
Einen schönen Samstag noch.
Gruß, Mathias
Die sauberste Möglichkeit wäre wohl eine Callback-Funktion mittels preg_replace_callback anzuwenden.
Grüße.