【问题标题】:PHP include without output? [duplicate]PHP包含没有输出? [复制]
【发布时间】:2012-06-29 12:54:50
【问题描述】:

好的,

事情就是这样。我有一个(付费的)购物车,我目前正在使用 jquery 和 css 以及其他任何让它看起来和工作得比现在更好的东西。

无论如何。为了使用他们的数据库和他们的功能等,我需要在网页的开头包含他们的文件。我把它放在了一个

<div style="display:none;">

当然,任何输出仍会写入浏览器。它不是很多,但我更喜欢没有 div 和没有输出,但我仍然希望它执行它的计算。它有 5000 行 PHP 文件,而且它太复杂了,无法通过和编辑我不想要的部分。

有没有一种聪明的方法,我可以包含该文件,但指定在包含它时是否要将任何内容写入页面?

我知道这有点麻烦,我希望我已经解释了自己,如果有人可以提供帮助,请告诉我。

谢谢。

【问题讨论】:

  • 你已经支付了五千行 PHP 脚本的费用。作者不能让它在没有请求的时候不输出任何东西吗?
  • 这个购物应用是我加入公司之前买的。它使我免于编写一个全新的购物和数据库管理系统,所以我很乐意使用它。我确实想过问他们,但从技术上讲,我并没有真正以正确的方式使用他们的脚本;我想他们只会说不。
  • 他们很乐意这样做,但也很乐意为此向您收费:]

标签: php html include


【解决方案1】:

您可以使用output buffering 将输出捕获到变量中,而不是将其发送到浏览器:

ob_start();
require(...);
$data = ob_get_clean();

注意使用require 而不是include。那是因为我个人认为脚本在遇到包含错误时应该会崩溃,而不是像没有错一样继续。

【讨论】:

  • 谢谢,我之前没用过这个功能。 php想到了一切!
  • 如果你想随后发送一些输出,最好用 ob_start() 包装 include 或 require; ob_end_clean();
【解决方案2】:

查看ob_start()ob_end_clean()。它们允许您捕获输出并将其转储,这应该可以解决您的问题。您可能还想与您的供应商讨论创建他们软件的非输出版本,这确实是它应该做的(我知道向合唱团讲道)。

直到现在我才真正知道使用ob-end-clean 的正当理由。 :-)

【讨论】:

  • 没有。老实说,我以前没有遇到过这个功能。非常有用。
猜你喜欢
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 2011-10-16
  • 2012-08-13
  • 2014-04-22
  • 2021-07-11
相关资源
最近更新 更多