Puoi sostituire i punti di domanda con '%s' e usare vsprintf():
Codice PHP:
$string = 'prova di ? del ? con la ? vsprintf';
$values = array('sostituzione', 'testo', 'funzione');
echo sostituisci($string, $values);
function sostituisci($string, $values) {
$string = str_replace('?', '%s', $string);
return vsprintf($string, $values);
}