我在drupal自定义模块中编写了以下代码。
我在$ html中获得输出,但它仍然打印文件的输出。
即:如果字符串"你好"在custom-report.php
中它会打印两次。
ob_start();
require_once('templates\custom-report.php');
$html = ob_get_contents();
echo $html;
答案 0 :(得分:1)
ob_get_clean()
代替ob_get_contents()
您必须清理并关闭输出缓冲区。
以下内容:
1。)保存内容 2。)仅在您需要时输出内容。
ob_start();
require_once('templates\custom-report.php');
$html = ob_get_clean();
echo $html;
ob_get_contents()
这将返回缓冲区内容,但不会擦除缓冲区的输出。
ob_get_clean()
这将返回缓冲区内容,清除输出缓冲区,结束输出缓冲。
您问题中的代码会产生不良后果:
1。) 输出缓冲区已保存,但保持打开状态。 2。) echo $html
发送您保存的输出缓冲区内容副本。 3。)当PHP到达脚本末尾时,PHP会自动刷新打开的输出缓冲区内容。所以你的输出是第二次发送。
这是输出缓冲区问题的绝佳资源: http://www.tuxradar.com/practicalphp/13/3/0