Dizi [INDEX] elemanı ile {} tag_INDEX nasıl değiştirilir

2 Cevap php

Ben böyle dize var;

"Dize {tag_0} metin {tag_2} ve {} tag_1"

Şimdi ben dizi elemanları ile tüm {tag_INDEX} değiştirmeniz gerekiyor

$myArray = array('a','b','c');

böylece değişiminden sonra bu gibi görünüyor olmalıdır:

"Dize bir metin c ve b"

Bunu yapmanın en iyi yolu nedir? Ben preg_replace ve preg_replace_callback ile ancak herhangi bir iyi sonuç olmadan çalışıyorum

2 Cevap

No regex gereklidir:

$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;
}

Her tekrarında sınırı 1 ile tekrarlamalı bir regex çalıştırın ve $ myArray [n] ile ifade değiştirin.