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.php
和 app/config.php
,您可以使用 return
关键字从 config.php 文件中返回一些内容。然后,当您包含文件时,您从 config.php 返回的任何内容都可以保存到变量中。
例子:
首先从 config.php 文件中返回您想要的任何内容(可以是数组、字符串等)。<?php
return ['name' => 'Spam'];
然后在 index.php 中:
<?php
$contents = include_once('config.php');
echo $contents;
【讨论】:
好的,有两种方法,一种是只包含文件,然后您就可以获得所需的输出,如下所示:<?php include_once './test2.php'; ?>
。如果出于某种原因必须将内容保存到变量中,则另一种情况。是在echo
之前调用ob_end_clean()
。以上是关于PHP - 读取另一个 PHP 文件的内容而不回显的主要内容,如果未能解决你的问题,请参考以下文章