Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对也包含ECHO的HTML字符串进行输出缓冲和调用ECHO_Php_Output Buffering - Fatal编程技术网

Php 对也包含ECHO的HTML字符串进行输出缓冲和调用ECHO

Php 对也包含ECHO的HTML字符串进行输出缓冲和调用ECHO,php,output-buffering,Php,Output Buffering,我有一个包含html和内联PHP echo语句的模板文件。例如,模板可能看起来像: <div class="<?php echo $classes ?>"> <div class="uk-container uk-container-center"> <section class="uk-grid uk-grid-match" data-uk-grid-match="{target:'> div > .uk-pan

我有一个包含html和内联PHP echo语句的模板文件。例如,模板可能看起来像:

<div class="<?php echo $classes ?>">

    <div class="uk-container uk-container-center">

        <section class="uk-grid uk-grid-match" data-uk-grid-match="{target:'> div > .uk-panel'}" data-uk-grid-margin>

            <?php echo $content ?>

        </section>

    </div>

</div>
不幸的是,$resolvedMarkup包含从模板文件读取的原始字符串,并且内联的echo语句仍然存在,并且没有解析为引用变量的值

我的问题是,我对这个用法的解释正确吗?我应该得到一个完全解析的字符串吗

通常,我可以使用
include
来实现这类功能,但在这种情况下,尽管示例代码很简短,但将模板放入内存的原因很多(主要是因为每个模板可能位于需要相互解析的模板层次结构中,从而改变原始模板结构)

在这个阶段,我试图避免使用临时文件

我希望这个问题很清楚,并希望您能就我的方法是否有效以及如果有效,我可能做错了什么提出建议/想法。

这是您的问题:

在脚本中使用文件\u get\u contents()读取模板

file\u get\u contents()
相当于
fopen();fread();fclose()
。它只是将文件中的字节吸进变量中。这些字节不会执行,因此该文件中的任何PHP代码块都会保留为

在脚本中使用文件\u get\u contents()读取模板


file\u get\u contents()
相当于
fopen();fread();fclose()
。它只是将文件中的字节提取到变量中。这些字节不会执行,因此文件中可能保留为
的任何PHP代码块实际上不会解析任何PHP。您需要的是
eval
。 在这里,我必须将我的模板转换成可以被php解析的文本

<?php
$str1 = " this is <?php echo \$i;?> now\n";
$i=99;
echo eval('?>' . $str1 . '<?php ');

Just echo实际上并不解析任何PHP。您需要的是
eval
。 在这里,我必须将我的模板转换成可以被php解析的文本

<?php
$str1 = " this is <?php echo \$i;?> now\n";
$i=99;
echo eval('?>' . $str1 . '<?php ');

我是否正确解释了此用法?
我是否应该返回完全解析的字符串?
不执行php代码您需要包含此文件感谢您回答我的问题。
我是否正确解释了此用法?
我是否应该返回完全解析的字符串?
不执行php代码您需要包含此文件感谢您回答我的问题。在解析变量之前,我需要在某些情况下操作模板文件内容。我对
file\u get\u contents()的使用
是将文件作为字符串获取,而不是在将文件读入内存时解析变量。由于文件内容将被更改,除了创建临时文件之外,我不能使用
包含
。看起来是一种方法。我感谢您的澄清。在某些情况下,我需要操纵模板文件内容b在解析变量之前。我对
file\u get\u contents()的使用
是将文件作为字符串获取,而不是在文件读入内存时解析变量。由于文件内容将被更改,除了创建临时文件之外,我不能使用
include
。看起来是一种方法。我感谢您的澄清。我曾想过
eval
,但试图避免使用它。H不过,这看起来可能是一个解决方案,因为我不想创建临时文件以便“包括”它们。我曾想过
eval
,但试图避免使用它。然而,这看起来可能是一个解决方案,因为我不想创建临时文件以便“包括”它们。