如何用另一个文件中的值替换变量

时间:2015-10-09 11:13:03

标签: php

我正在尝试替换变量

的值

我有以下文件

demo.html

generateRandomFileNameWithExtension()

demo.php

<h1>{$heading}</h1>
<p>{$paragraph}</p>

这里我尝试包含该文件并替换 $html = file_get_contents('email.html', true); eval($html); $heading的值而不是echo。

我的问题是如何做到这一点?

3 个答案:

答案 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'));

也应该有用。