PHP - 读取另一个 PHP 文件的内容而不回显

Posted

技术标签:

【中文标题】PHP - 读取另一个 PHP 文件的内容而不回显【英文标题】:PHP - Reading contents of another PHP file without it echoing 【发布时间】:2015-04-19 05:08:11 【问题描述】:

我正在尝试访问 php 文件的内容,但该文件并未实际输出它通常会执行的操作。这是我的测试代码:

文件1 (test1.php)

<?php
    ob_start();
    include_once './test2.php';
    $test = ob_get_contents();

    echo $test;
?>

这里是file2 (test2.php)

<?php
     $testVar = 'Name!';
?>
<div class="testClass"><?php echo $testVar?></div>
<p>Spam2</p>

我希望它只这样做是因为

回声 $test

行不是因为文件正在输出内容。

<p>Spam2</p><div class="testClass">Name!</div>
<p>Spam2</p></body>

由于回声,但它返回了这个

<p>Spam2</p><div class="testClass">Name!</div>
<p>Spam2</p></body>
<p>Spam2</p><div class="testClass">Name!</div>
<p>Spam2</p></body>

那么如何让它只返回一次内容呢?

【问题讨论】:

2个文件在哪里???你需要两个文件。 1.其实包含一些内容。 2.这个php文件从其他文件中读取内容。请说清楚。 如果你要检查你的代码。您将“垃圾邮件”一词写入 php 文件。在同一个 php 文件中,您将获得同一个 php 文件的内容。并回应它..请详细说明问题 我希望文件只显示一次“垃圾邮件”。这意味着 $test 变量是唯一有垃圾邮件的容器。我不知道还能怎么说这个。它会导致我真正想做的事情,但我会在变得更复杂之前分解事情。 ./test2.php上显示代码。 我做了,就在 test1.php 的下方。代替垃圾邮件,我会包含 html 或类似的内容。 【参考方案1】:

不要echo $test;。 PHP 正在按应有的方式执行。由于./test2.php 以 HTML 格式显示垃圾邮件,因此它出现在页面上,因此您将页面内容分配给一个变量并 echo 它。你期待什么?

【讨论】:

我解释了我的预期。我想获取文件输出的内容并将其转换为变量然后使用它。我不希望它输出并将其放入变量中。我没有问它是否正确执行,我问的是如何让它做一些除了正在发生的事情之外的事情。 如果使用file_get_contents(),则不必输出文件。 ob_get_contents() 用于输出缓冲以获取当前页面的内容。你甚至不需要ob_start(),除非你想输出缓冲你的代码。当您包含或需要一个文件时,它会直接进入您包含它的文件中。 嗯,你帮我解决了我的问题。我又更新了,抱歉。我的项目设置的其余部分是它获取内容并在 JSON 中返回它,但我猜切换到 HTML 本身,而不是 JSON,会缓解这个问题并使主题的其他部分更容易。取而代之的是,我将改变我使用这些数据的方式。感谢您将我推向这个方向的帮助:P。我的实际问题可能仍未得到解答。 很高兴它成功了。最近我越来越多地使用 PHP 来生成与 javascript 一起使用的 JSON。 AJAX、AJAX、AJAX。 哈哈,是的。这就是为什么我希望它以另一种方式工作,但这同样好:P。【参考方案2】:

如果您有 2 个文件说:app/index.phpapp/config.php,您可以使用 return 关键字从 config.php 文件中返回一些内容。然后,当您包含文件时,您从 config.php 返回的任何内容都可以保存到变量中。

例子:

首先从 config.php 文件中返回您想要的任何内容(可以是数组、字符串等)。
<?php 
return ['name' => 'Spam'];
然后在 index.php 中:
<?php
$contents = include_once('config.php');
echo $contents;

【讨论】:

好的,有两种方法,一种是只包含文件,然后您就可以获得所需的输出,如下所示:&lt;?php include_once './test2.php'; ?&gt;。如果出于某种原因必须将内容保存到变量中,则另一种情况。是在echo之前调用ob_end_clean()

以上是关于PHP - 读取另一个 PHP 文件的内容而不回显的主要内容,如果未能解决你的问题,请参考以下文章

在 WordPress 中加载模板而不回显它

屏蔽回显

在WordPress中加载模板而不回显它

怎么用php读取并显示另一个php文件的内容?

UNION ALL 不回显附加文本[重复]

PHP:如何在我的页面上显示文本文件的内容?