替换阵列回调

pil*_*ila 2 php arrays replace callback

我有一个字符串:

"Hello ? my name is ? and i am ? years old." 
Run Code Online (Sandbox Code Playgroud)

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

$data = array('Mister,','Tom','30');
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找一种干净的方式来?通过其相同的数组索引来转换所有,以便我得到:

"你好先生,我的名字是汤姆,我今年30岁."

另外,我希望ucfirst()在替换它们时将函数传递给每个数组条目.

有人知道怎么做吗?

Nik*_*ams 5

使用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);
Run Code Online (Sandbox Code Playgroud)