我有一个字符串,比如:
"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