替换数组回调


Replace Array Callback

我有一个字符串,比如:

"Hello ? my name is ? and i am ? years old." 

每个"?"都是一个变量,我想用一个数组替换每个变量。所以我有这个数组:

$data = array('Mister,','Tom','30');

因此,我正在寻找一种干净的方法,通过其相等的数组索引来转换所有?,这样我就得到:

"你好,先生,我叫汤姆,今年30岁。"

此外,我还想在替换每个数组条目时,将类似ucfirst()的函数传递给它们。

有人知道怎么做吗?

使用preg_replace_callback:

$str = "Hello ? my name is ? and i am ? years old.";
$data = array('Mister,','Tom','30');
$str = preg_replace_callback('/'?/', function($match) use(&$data) {
    return ucfirst(array_shift($data));
}, $str);

str_replace可以做到这一点(与array_map:结合使用

$array = array('Mister,', 'Tom', '30');
$new_string = str_replace(array('?', '?', '?'),
    array_map(function($v) { return ucfirst($v); }, $array),
    $old_string
);

sprintf()与call_user_func_array()?

array_walk()?

$string = 'String ? etc etc';
$string = preg_replace("/?/",array_shift($data), $string, 1);
$string = preg_replace("/?/",array_shift($data), $string, 1);
$string = preg_replace("/?/",array_shift($data), $string, 1);
echo $string