0

我有一个从文件中读取的 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!” 而不是你好世界!

有没有办法让 txt 文件中的 var 输出它们的值而不是它们的名称?

谢谢,布赖恩

4

3 回答 3

1

The second param of file_get_contents has nothing to do with how to interpret the file - it's about which pathes to check when looking for that file.

The result, however, will always be a complete string, and you can only "reinterpolate" it with evial.

What might be a better idea is using the combination of include and output control functions:

Main file:

<?php

$name = "World";
ob_start();
include('html.tpl');
$file = ob_get_clean();
echo $file;

html.tpl:

Hello <?= $name ?>

Note that php tags (<?= ... ?>) in the text ('.tpl') file - without it $name will not be parsed as a variable name.

于 2013-09-16T16:57:25.417 回答
1

具有预定义值的一种可能方法(而不是范围内的所有变量):

    $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>
于 2020-06-03T16:44:59.463 回答
0

要具体回答您的问题,您需要在 php.ini 中使用“eval”函数。 http://php.net/manual/en/function.eval.php

但是从开发的角度来看,我会考虑是否有更好的方法来做到这一点,或者将 $name 存储在更容易访问的地方,或者重新评估您的流程。使用 eval 函数之类的东西可能会带来一些严重的安全风险。

于 2013-09-16T16:51:36.460 回答