我有这样的字符串;
“字符串{tag_0}文字{tag_2}和{tag_1}”
现在我需要用数组
中的元素替换所有{tag_INDEX}$myArray = array('a','b','c');
所以在更换之后应该看起来像:
“将文字c和b串起来”
最好的方法是什么?我正在尝试使用preg_replace和preg_replace_callback但没有任何好结果
答案 0 :(得分:6)
$newStr = preg_replace('/{tag_(\d+)}/e', '$myArray[\1]', $str);
答案 1 :(得分:1)
不需要正则表达式:
$s = "String {tag_0} text {tag_2} and {tag_1}";
$myArray = array('a','b','c');
$s = template_subst($s, $myArray);
echo $s;
// generic templating function
function template_subst($str, &$arr) {
foreach ($arr as $i => &$v) {
$str = str_replace("{tag_$i}", $v, $str);
}
return $str;
}
答案 2 :(得分:0)
在每次迭代中运行一个限制为1的迭代正则表达式,并用$ myArray [n]替换表达式。