【发布时间】:2019-07-29 22:06:36
【问题描述】:
首先,我从一个只是名称的 XML 文件中提取文本并将其放入 $name 变量中。
然后我从不同的 XML 文件中提取一些其他文本,该文本包含一个变量,假设:
<list>
<wishes>
<id>001</id>
<text>Happy birthday, '.$name.'</text>
</wishes>
</list>
如您所见,我已经尝试以一种应该 conc... conat... 解析它的方式对其进行格式化,但它没有。一旦我将它包含在这样简单的东西中:
foreach ($people->user as $person) {
if ($person->date == date('d.m')) {
$name = $person->name;
foreach ($list->wishes as $wish) {
$text = $wish->text;
}
echo 'Wishes for '.$name.'.';
echo 'Wish example: '.$text.' something something';
}
结果将是:
Wishes for John.
Wish example: Happy birthday, '.$name.' something something
它将变量视为纯文本,而不是用人的实际姓名替换它。
那么,如果变量包含在 XML 文件中,我如何强制它用实际名称替换 $name 变量?顺便说一句,我还尝试在不同的地方包含echo 或print - 在 XML 文件中,通过设置另一个变量来打印 XML 文件的内容,然后将该变量设置为最后回显的变量 -不走运,它只是一直将其视为文本。
【问题讨论】:
-
$wish->text = str_replace('$name',$person->name,$wish->text)够吗?我觉得允许任意变量替换甚至使用 eval 可以打开您的代码进行探索。原文到底是从哪里来的?