gpt4 book ai didi

PHP 在变量中捕获打印/要求输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:54:30 24 4
gpt4 key购买 nike

是否可以将 print() 的输出添加到变量中?

我有以下情况:

我有一个看起来像这样的 php 文件:

title.php

<?php

$content = '<h1>Page heading</h1>';

print($content);

我有一个如下所示的 php 文件:

page.php

<?php

$content = '<div id="top"></div>';
$content.= $this->renderHtml('title.php');

print($content);

我有一个函数renderHtml():

public function renderHtml($name) {
$path = SITE_PATH . '/application/views/' . $name;

if (file_exists($path) == false) {
throw new Exception('View not found in '. $path);
return false;
}

require($path);
}

当我在 page.php 中转储内容变量时,它不包含 title.php 的内容。 title.php 的内容只是在调用时打印出来,而不是添加到变量中。

我希望清楚我正在尝试做什么。如果不是,我很抱歉,请告诉我你需要知道什么。 :)

感谢您的帮助!

附言

我发现已经有和我一样的问题了。但它是关于 Zend FW 的。

How to capture a Zend view output instead of actually outputting it

但我认为这正是我想要做的。

我应该如何设置该函数以使其表现如此?

编辑

只是想分享最终的解决方案:

public function renderHtml($name) {
$path = SITE_PATH . '/application/views/' . $name;

if (file_exists($path) == false) {
throw new Exception('View not found in '. $path);
return false;
}

ob_start();
require($path);
$output = ob_get_clean();

return $output;
}

最佳答案

您可以使用 ob_start() 捕获输出和 ob_get_clean()功能:

ob_start();
print("abc");
$output = ob_get_clean();
// $output contains everything outputed between ob_start() and ob_get_clean()

或者,请注意,您也可以从包含的文件中返回值,例如从函数中返回值:

a.php:

return "<html>";

b.php:

$html = include "a.php"; // $html will contain "<html>"

关于PHP 在变量中捕获打印/要求输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com