Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.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+;Smarty:解析PHP+;HTML转换成字符串?_Php_Html_Smarty_Server Side - Fatal编程技术网

PHP+;Smarty:解析PHP+;HTML转换成字符串?

PHP+;Smarty:解析PHP+;HTML转换成字符串?,php,html,smarty,server-side,Php,Html,Smarty,Server Side,我将PHP与Smarty模板结合使用,在服务器端生成页面。目前,我正在加载一个页面,如下所示: $smarty->assign('app', file_get_contents("some_content.php")); 其中一些内容包含带有PHP标记的HTML以及这些标记中的代码 我希望该文件中的PHP内容在当前范围内(读取该文件的脚本的范围),以便我定义的特定函数可用。我该怎么做呢?我能找到的所有信息都是关于eval(…)函数的,它似乎无法处理HTML/PHP的混合:我是否需要执行f

我将PHP与Smarty模板结合使用,在服务器端生成页面。目前,我正在加载一个页面,如下所示:

$smarty->assign('app', file_get_contents("some_content.php"));
其中一些内容包含带有PHP标记的HTML以及这些标记中的代码


我希望该文件中的PHP内容在当前范围内(读取该文件的脚本的范围),以便我定义的特定函数可用。我该怎么做呢?我能找到的所有信息都是关于eval(…)函数的,它似乎无法处理HTML/PHP的混合:我是否需要执行find/eval/replace操作来实现所需的结果,或者是否有更优雅的方法来实现这一点?

我就是这样一个傻瓜。PHP手册上有一个关于eval的答案,就在我眼皮底下

在我看来,您发布的这段代码表明,这里通常存在一些问题:)

但无论如何,你可以通过以下方式实现你想要实现的目标:

ob_start();
include("some_content.php");
$result = ob_get_clean();
$smarty->assign('app', $result);

您可以使用{literal}…{/literal}smarty标记按原样显示smarty模板中的任何内容。它用于传输java脚本和其他特定内容

谢谢Eugene,我将您的代码制作成一个很好的小函数,名为parse_in_scope,参数是要解析的文件,返回值是$result。非常好用,谢谢!顺便问一下,你认为这个片段的“一般错误”是什么?代码有点像是对一个更大问题的封装,但我想听听您的想法:^)。对我来说,唯一有理由尝试将经过评估的php/html代码分配给Smarty变量的情况是尝试使用一些第三方代码“按原样”:)这正是我正在做的,我实际上有点偏离了方向,可能没有必要这样做,但在我的工具带上有这个技巧很好。