Sostituzione multipla (probabilmente preg_replace) della stessa string con arrays

Ho bisogno di sostituire più istanze di una determinata string (punto interrogativo) con le stringhe di un arrays. ad esempio se la string che desidero sostituire appare 3 volte e il mio arrays ha una lunghezza di 3, il primo sarà sostituito dal primo elemento dell'arrays, il secondo dal secondo ecc ecc.

Si può ricolbind è abbastanza simile al modo in cui le istruzioni preparate funzionano in mysqli.

Ecco un esempio:

 $ myArray = arrays (
     [0] => 'giallo',
     [1] => 'verde',
     [2] => 'rosso'
 );

 $ myString = 'banana è?, mela è?, pomodoro è?';

 $ newString = someFunction ($ myString, $ myArray);

 echo $ newString;

Questo poi ritornerebbe

 la banana è gialla, la mela è verde, il pomodoro è rosso

Qualcuno può suggerire un modo per farlo usando PHP 5.2.

perché non usare

$retString = vsprintf('banana is %s, apple is %s, tomato is %s', $myArray); return $retString; 

Diventa un po 'brutto in PHP 5.2 perché devi usare le variables globali per passare le informazioni tra i callback ma altrimenti è molto flessibile. Usa preg_replace_callback() :

 preg_replace_callback('!\?!', 'rep_arrays', $myString); $i = 0; function rep_arrays($matches) { global $myArray; return $myArray[$i++]; } 

Dovresti provvedere che ci sia di più ? s delle voci dell'arrays e resetta il contatore ad each chiamata.

Adam ha ragione riguardo a sprintf() essere un po 'più pulito, ma non si controlla sempre la string di input. preg_replace_callback può soddisfare una vasta gamma di circostanze.