我正在尝试替换变量
的值我有以下文件
demo.html
generateRandomFileNameWithExtension()
demo.php
<h1>{$heading}</h1>
<p>{$paragraph}</p>
这里我尝试包含该文件并替换 $html = file_get_contents('email.html', true);
eval($html);
和$heading
的值而不是echo。
我的问题是如何做到这一点?
答案 0 :(得分:1)
首先,此代码不需要eval()
,因为它不包含需要执行的PHP。 eval()
是非常危险的功能。
您的内容在$html
中作为字符串,因此,您现在可以使用名为str_replace()
的更安全的函数来查找,并使用正确的数据替换值占位符。
该函数使用以下参数:str_replace($search, $replace, $subject)
,接受数组作为参数,并返回包含替换值的完整字符串。
因此,回答你的问题:
// $html = ...
$search = array(
'{$heading}',
'{$paragraph}'
);
$replace = array(
'My Heading',
'My Paragraph',
);
$replaced_string = str_replace($search, $replace, $html)
答案 1 :(得分:0)
使用str_replace。
$replace = array(
'{$heading}' => 'Replaced heading',
'{$paragraph}' => 'Replaced paragraph'
);
$html = file_get_contents('email.html', true);
$html = str_reaplce(array_keys($replace), array_values($replace), $html);
echo $html;
答案 2 :(得分:0)
将 demo.html 更改为 demo.tpl.php
在 demo.php 中执行:
$heading = 'Heading';
$paragraph = 'Para';
include 'demo.tpl.php';
这应该有效。
如果无法更改名称,请在 demo.php 执行:
$heading = 'Heading';
$paragraph = 'Para';
print str_replace(
array('{$heading}','{$paragraph}'), # use ' not " here!!!
array($heading,$paragraph),
file_get_contents('demo.html'));
也应该有用。