Php 如何用数组[INDEX]元素替换{tag_INDEX}

Php 如何用数组[INDEX]元素替换{tag_INDEX},php,arrays,replace,indexing,Php,Arrays,Replace,Indexing,我有这样的绳子 “字符串{tag_0}文本{tag_2}和{tag_1}” 现在我需要用数组中的元素替换所有{tag_INDEX} $myArray = array('a','b','c'); 因此,更换后,它应该看起来像: “字符串a文本c和b” 最好的方法是什么?我尝试使用preg_replace和preg_replace_回调,但没有任何好结果在每次迭代中运行一个限制为1的迭代正则表达式,并用$myArray[n]替换表达式。无需正则表达式: $newStr = preg_replace

我有这样的绳子

“字符串{tag_0}文本{tag_2}和{tag_1}”

现在我需要用数组中的元素替换所有{tag_INDEX}

$myArray = array('a','b','c');
因此,更换后,它应该看起来像:

“字符串a文本c和b”


最好的方法是什么?我尝试使用preg_replace和preg_replace_回调,但没有任何好结果

在每次迭代中运行一个限制为1的迭代正则表达式,并用$myArray[n]替换表达式。

无需正则表达式:

$newStr = preg_replace('/{tag_(\d+)}/e', '$myArray[\1]', $str);
$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;
}

不要忘了分配
preg\u replace
的结果,它也不会像一些人通常认为的那样进行替换。@Matthew,谢谢,我在我的答案中添加了一个赋值,以防有人出于好奇而被它搞糊涂,为什么要通过引用传递数组?