我有一个从文件中读取的php页面:
$name = "World";
$file = file_get_contents('html.txt', true);
$file = file_get_contents('html.txt', FILE_USE_INCLUDE_PATH);
echo $file;
在html.txt中我有以下内容:
Hello $name!
当我去网站时,我得到“Hello $ name!”而不是Hello World!
有没有办法让txt文件中的var输出它们的值而不是它们的名字?
谢谢, 布赖恩
答案 0 :(得分:1)
file_get_contents的第二个参数与如何解释文件无关 - 它是关于在查找该文件时要检查的修补程序。
但是,结果始终是完整的字符串,您只能使用evial“重新插入”它。
使用include和output control functions的组合可能是一个更好的主意:
主要文件:
<?php
$name = "World";
ob_start();
include('html.tpl');
$file = ob_get_clean();
echo $file;
<强> html.tpl:强>
Hello <?= $name ?>
请注意,文本(<?= ... ?>
)文件中的php标记('.tpl'
) - 没有它$name
将不会被解析为变量名称。
答案 1 :(得分:0)
要专门回答你的问题,你需要在php中使用'eval'功能。 http://php.net/manual/en/function.eval.php
但是从开发的角度来看,我会考虑是否有更好的方法来实现这一点,或者通过将$ name存储在更容易访问的地方或者重新评估您的流程。使用eval函数之类的东西会带来一些严重的安全风险。
答案 2 :(得分:0)
使用预定义值(而不是作用域中的所有变量)的一种可能方法:
$name = "World";
$name2 = "John";
$template = file_get_contents ('html_templates/template.html');
$replace_array = array(
':name' => $name,
':name2' => $name2,
...
);
$final_html = strtr($template, $replace_array);
在template.html中,您将看到以下内容:
<div>Hello :name!</div>
<div>And also hi to you, :name2!</div>