基本上,我想要实现的是用" Text"动态替换{SOME_TAG}
。
我的想法是阅读所有标签,如{SOME_TAG}
,将它们放入数组中
然后将数组键转换为$some_tag
之类的变量,并将它们放入数组中。
所以,这是我得到了多远:
//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 :(得分: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);
答案 1 :(得分:1)
如果我理解正确:
您正在尝试使用{TAGS}创建可自定义的文档,以便表示可以使用动态信息填充的可替换区域。在用动态信息替换{TAGS}的某个时间点,您希望动态信息存储在自动生成的基本变量名称中,如$ tags。
我不确定为什么要将这些标记转换为基本变量,而不是将它们完全用作数组键。我想指出,这代表了一个安全或功能漏洞 - 如果有人将{REPLACE}作为标记放入文档中会发生什么?您的替换阵列将被动态数据覆盖,您的整个程序将崩溃。无论是那个,还是整个替换数组都会被转入{REPLACE},这使得一个非常混乱的文档可能包含你想要的数据。也许你有这个问题 - 我没有这里的所有背景 - 但我想我会指出风险因素。
至于更好的解决方案,除非你通过$ tag而不是直接使用$ replace数据来解决某些特定需求,否则我喜欢@Emissary的答案。