2013-03-15 70 views
0

基本上,我想實現的是動態替換{SOME_TAG}與「文本」的內容。
我的想法是讀取所有標籤,如{SOME_TAG},把它們放到數組。
然後轉換數組鍵爲變量,如$some_tag,並把它們放到數組。PHP替換字符串標籤/佔位符/標記與動態值

所以,這是我在多大程度上得到:

//Some code goes here 
$some_tag = "Is defined somewhere else."; 
$different_tag = 1 + $something; 
Some text {SOME_TAG} appears in different file, which contents has been read earlier. 
//Some code goes here 

preg_match_all('/{\w+}/', $strings, $search); 
$search = str_replace(str_split('{}'),"",$search[0]); 
$search = array_change_key_case(array_flip($search), CASE_LOWER); 
...some code missing here, which I cant figure out. 

更換陣列應該是這個樣子

$replace = array($some_tag, $different_tag); 
//Then comes replacing code and output blah blah blah.. 

如何使陣列$replace包含變量動態地根據$search陣列?

+0

這沒有意義。 – silkfire 2013-03-15 13:08:21

+0

您希望我們如何幫助..請正確編輯您的問題,以便其他人能夠理解。另外請不要嘗試複製粘貼代碼。你不應該說「這裏有些代碼缺失,我無法弄清楚」?這是什麼意思 ? – 2013-03-15 13:13:05

回答

5

爲什麼線沿線的不是:如果我理解正確

<?php 

$replace = array(
    '{TAG_1}' => 'hello', 
    '{TAG_2}' => 'world', 
    '{TAG_3}' => '!' 
); 

$myString = '{TAG_1} {TAG_2}{TAG_3}{TAG_3}'; 

echo str_replace(array_keys($replace), array_values($replace), $myString); 
+0

一開始這也是我的第一個想法。看起來這會更好。謝謝。 – user2173830 2013-03-15 14:01:48

1

你正在努力試圖創建一個自定義的文件,使用{}標籤以表示更換地區可以用動態信息填充。在用動態信息替換{TAGS}的某個時間點,您希望將動態信息存儲在自動生成的基本變量名稱中,如$ tags。

我不知道你爲什麼要替換使用它們完全是作爲數組鍵,這些標記基本變量轉換。我想指出的是,這代表安全或功能漏洞 - 如果有人將{REPLACE}作爲標籤放入文檔中會發生什麼情況?你的替換數組會被動態數據覆蓋,你的整個程序會崩潰。要麼是這樣,要麼就是整個替換數組將被轉儲到{REPLACE}中,從而導致一個非常混亂的文檔,其中可能包含您不希望它們擁有的數據。也許你已經解決了這個問題 - 我沒有這方面的全部內容 - 但我想我會指出風險因素。

對於一個更好的解決方案,除非有,你通過$標籤去,而不是直接使用$代替陣列使用解決一些特定的需要,我喜歡@使者的答案。

+0

我以爲我有好主意,但看起來你是對的。 – user2173830 2013-03-15 14:36:13