如何用array [INDEX]元素替换{tag_INDEX}

时间:2010-05-25 09:42:52

标签: php arrays replace indexing

我有这样的字符串;

  

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

现在我需要用数组

中的元素替换所有{tag_INDEX}
$myArray = array('a','b','c');

所以在更换之后应该看起来像:

  

“将文字c和b串起来”

最好的方法是什么?我正在尝试使用preg_replace和preg_replace_callback但没有任何好结果

3 个答案:

答案 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]替换表达式。