我有這樣的字符串;如何用數組[INDEX]元素替換{tag_INDEX}
「字符串{TAG_0}文本{TAG_2}和{TAG_1}」
現在我需要與更換後,使得來自陣列
$myArray = array('a','b','c');
元素替換所有{tag_INDEX}它應該看起來像:
「String a text c and b」
這樣做的最佳方法是什麼?我試圖用的preg_replace和preg_replace_callback但沒有什麼好結果
我有這樣的字符串;如何用數組[INDEX]元素替換{tag_INDEX}
「字符串{TAG_0}文本{TAG_2}和{TAG_1}」
現在我需要與更換後,使得來自陣列
$myArray = array('a','b','c');
元素替換所有{tag_INDEX}它應該看起來像:
「String a text c and b」
這樣做的最佳方法是什麼?我試圖用的preg_replace和preg_replace_callback但沒有什麼好結果
$newStr = preg_replace('/{tag_(\d+)}/e', '$myArray[\1]', $str);
運行在每個迭代與限制1迭代的正則表達式,並用$ myarray的[N]更換你的表達。
沒有正則表達式的要求:
$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;
}
出於好奇,爲什麼你通過引用來傳遞數組? – 2010-05-25 11:21:43
@Matthew:爲什麼不呢。複製它沒什麼意義。 – Tomalak 2010-05-25 14:29:23
不要忘記preg_replace'的'結果要麼分配,它不到位取代一些人往往顯得相信。 – 2010-05-25 09:47:29
@Matthew,謝謝,我已經添加了一個任務給我的答案,以防有人被這個問題困惑 – 2010-05-25 09:52:50