是否可以将 PHP 代码执行到变量中?例如我有index.php
和page.php
文件在同一个目录中。如果您执行page.php
,您将拥有 HTML 页面的一部分。我想把它作为一个字符串放入index.php
. 有什么建议么?
6 回答
您可以使用输出缓冲区:
<?php
ob_start();
include('page.php');
$page = ob_get_clean();
?>
请注意 page.php 仍然在相同的上下文中执行(全局变量、函数等继续存在)
一般来说,做这样的事情听起来像是损坏的设计和 page.php 应该被正确地重写。
include('page.php');
page.php
这将包括从index.php
您可以使用cURL检索脚本的输出并将其保存到变量中。下面是你在 index.php 中要做的事情:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘page.php’);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec ($ch);
请注意,当您想要的只是响应时,没有必要将其他脚本(和相关变量)包含到您的页面中。包含脚本意味着您必须避免变量名、函数名等之间的冲突。
如果您想执行 page.php 中的一些代码,您可以包含该文件并在 page.php 中创建一个函数,如下所示:
<?php include('page.php');
$test = function MyHtmlCode();
echo $text;
?>
您没有提供示例代码,因此我假设页面实际打印(使用 echo、print 等),然后您可以使用php output buffering。
<?php
ob_start();
require_once('index.php');
$out = ob_get_contents();
ob_end_clean();
?>
(编辑)
这是一个解决方案,但它绝对不是最佳实践......那将是将打印 HTML 的代码移动到生成 HTML 并返回它的函数中,然后将这些函数移动到一个单独的文件中,该文件将包含在index.php 和 page.php,然后简单地调用这些函数。包括一个应该打印一些输出的文件,并用输出缓冲区扭曲它会使代码不可读和混乱。
你应该试试这个:
ob_start()
include('page.php');
$variable = ob_get_clean();
这将启动一个输出缓冲区,包含page.php
文件并将写入输出缓冲区的所有内容写入$variable