PHP用动态值替换文本字符串中的标记/占位符/标记

PHP用动态值替换文本字符串中的标记/占位符/标记,php,arrays,variables,replace,Php,Arrays,Variables,Replace,基本上,我想要实现的是用“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 differe

基本上,我想要实现的是用“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
数组动态包含变量?

为什么不按照以下内容进行操作:

<?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);

为什么不做一些类似于:

<?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);

如果我理解正确:

您正在尝试创建一个可定制的文档,使用{TAGS}来表示可以用动态信息填充的可替换区域。在用动态信息替换{TAGS}的某个时间点,您希望动态信息存储在自动生成的基本变量名中,如$TAGS

我不知道为什么要将这些标记转换为基本变量,而不是将它们完全用作数组键。我想指出,这代表了一个安全性或功能性漏洞——如果有人将{REPLACE}作为标记放入您的文档中,会发生什么情况?替换数组将被动态数据覆盖,整个程序将崩溃。要么这样,要么整个replace数组将被{replace}转储,这将导致一个非常混乱的文档,其中可能包含您不希望它们包含的数据。也许你已经解决了这个问题——我这里没有全部的背景——但我想我应该指出风险因素


至于更好的解决方案,除非您通过使用$tags而不是直接使用$replace数组来解决某些特定需求,否则我喜欢@Emissary的答案。

如果我理解正确:

您正在尝试创建一个可定制的文档,使用{TAGS}来表示可以用动态信息填充的可替换区域。在用动态信息替换{TAGS}的某个时间点,您希望动态信息存储在自动生成的基本变量名中,如$TAGS

我不知道为什么要将这些标记转换为基本变量,而不是将它们完全用作数组键。我想指出,这代表了一个安全性或功能性漏洞——如果有人将{REPLACE}作为标记放入您的文档中,会发生什么情况?替换数组将被动态数据覆盖,整个程序将崩溃。要么这样,要么整个replace数组将被{replace}转储,这将导致一个非常混乱的文档,其中可能包含您不希望它们包含的数据。也许你已经解决了这个问题——我这里没有全部的背景——但我想我应该指出风险因素


至于更好的解决方案,除非您通过使用$tags而不是直接使用$replace数组来解决某些特定需求,否则我喜欢@Emissary的回答。

这没有意义。您希望我们如何帮助。。请正确编辑您的问题,以便其他人能够理解。另外,请不要试图复制粘贴代码。你不应该说“.这里缺少一些代码,我想不出来”?这是什么意思?那没有道理。你想让我们如何帮助。。请正确编辑您的问题,以便其他人能够理解。另外,请不要试图复制粘贴代码。你不应该说“.这里缺少一些代码,我想不出来”?这是什么意思?一开始这也是我的第一个想法。看起来这样会更好。谢谢。一开始这也是我的第一个想法。看起来这样会更好。谢谢