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

Php 如何用另一个文件中的值替换变量,php,Php,我试图替换变量的值 我有以下文件 demo.html <h1>{$heading}</h1> <p>{$paragraph}</p> 在这里,我试图包括该文件并替换$heading和$paragration的值,而不是echo 我的问题是如何做到这一点?使用 将demo.html更改为demo.tpl.php $html = file_get_contents('email.html', true); eval($html);

我试图替换变量的值

我有以下文件

demo.html

<h1>{$heading}</h1>
<p>{$paragraph}</p>
在这里,我试图包括该文件并替换
$heading
$paragration
的值,而不是echo

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

使用


demo.html更改为demo.tpl.php

    $html = file_get_contents('email.html', true);
    eval($html);
在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'));
应该也可以。首先,此代码不需要使用
eval()
,因为它不包含需要执行的PHP
eval()
是一种非常危险的功能。 内容以字符串形式存在于
$html
中,因此,现在可以使用一个更安全的函数来查找,并用正确的数据替换值占位符

该函数使用以下参数:
str\u replace($search,$replace,$subject)
,接受数组作为参数,并返回带替换值的完整字符串

因此,要回答您的问题:

// $html = ...

$search = array(
    '{$heading}',
    '{$paragraph}'
);
$replace = array(
    'My Heading',
    'My Paragraph',
);

$replaced_string = str_replace($search, $replace, $html)

因为听起来像邪恶,所以很危险?如果操作正确,则可以计算代码中的变量;)但就像goto一样,每个人都避免使用它。如果您不在保存编码的条件下使用PHP,那么PHP是非常危险的。然而,对于一个琐碎的任务,使用eval是危险的,因为它打开了一个没有经验的开发人员可能不知道的漏洞。虽然它可以是
eval()
'd,但有一个替代选项可以做同样的事情,而且更安全:)
// $html = ...

$search = array(
    '{$heading}',
    '{$paragraph}'
);
$replace = array(
    'My Heading',
    'My Paragraph',
);

$replaced_string = str_replace($search, $replace, $html)