如何使用PHP的ob_start函数启用输出缓冲

有一个名为 ob_start 的 PHP 函数。

“启用输出缓冲”的意思,缓冲将数据存储在称为缓冲区的地方。

ob_start是一个函数,不会立即显示计算结果,而是暂时放在另一个地方。

没有立即输出结果怎么办?

在程序中,获取、格式化和计算各种数据。

将数据输出到页面时,在PHP文件中使用echo进行操作。

如果你写 echo,输出将在那个时候执行。

但是,我还不想程序马上就输出执行结果要怎么办呢?

当你想把它放在一起

比如如下图,有data和html标签被不同函数获取处理的情况。

示例一,保存为summary.php文件。

<?php
function getTitle(){ // 标题数据取得的函数
    return "<h2>烽烟博客</h2>"; 
}
 
function getNote(){ // 段落数据获取的函数
    return "<p>免费实用工具箱!</p>";
}
function makeHtml(){ 
    $data = "";
    $data .= '<div class="samurai_title">';
    $data .= getTitle(); // 标题数据函数调用
    $data .= getNote(); // 段落数据函数调用
    $data .= '</div>';
 
    return $data;
}
 
$html_code = makeHtml();
 
echo $html_code;
?>

执行结果

烽烟博客
免费实用工具箱!

由于未包含在<?php ?>中的部分将原样显示在页面上,因此有必要将标签包含在变量中。

另外,由于代码难读,如果html标签和数据获取分开写就好了。

如何使用PHP的ob_start函数启用输出缓冲

当您想要组合相同的处理时

编写程序时,一遍又一遍地重复相同的过程是不好的。

保存为same.php文件。

<div class="disp_html">
    <?php include("disp_html.php"); ?>
</div>
 
<div class="disp_html">
    <?php include("disp_html.php"); ?>
</div>

在上面的例子中,disp_html.php 被调用了两次。

最好将调用的结果保存在某处并调用它。

那么,为了解决这个问题,我们开始讲解如何使用ob_start。

把同一个进程和ob_start放在一起

现在是实践部分。

前文中给出的summary.php的基础上,我们使用ob_start一起输出。

保存为ob_start_summarize.php文件。

<?php
function getTitle(){ // 标题数据取得的函数
    return "<h2>烽烟博客</h2>"; 
}
 
function getNote(){ // 段落数据获取的函数
    return "<p>免费实用工具箱!</p>";
}
 
function makeHtml(){
    ob_start(); //开始记录
    ?>
 
    <div class="samurai_title">
        <?php echo getTitle(); ?>
        <?php echo getNote(); ?>
    </div>
 
    <?php
    $data = ob_get_contents(); // 将记录结果代入变量
    ob_end_clean(); // 记录终止
 
    return $data;
}
 
$html_code = makeHtml();
 
echo $html_code;
?>

执行结果

烽烟博客
免费实用工具箱!

结果和summarize.php一样,但是html标签可以直接写,不用放在变量里,这样代码更简洁。

ob_start的各种使用方式

现在,让我们使用 ob_start 来统一输出前文给出的 same.php 示例。

保存为ob_start_same.php文件。

<?php
    ob_start();
    include("disp_html.php");
    $disp_html = ob_get_contents();
    ob_end_clean();
?>
 
<div class="disp_html">
    <?php echo $disp_html; ?>
</div>
 
<div class="disp_html">
    <?php echo $disp_html; ?>
</div>

修改之前include("disp_html.php");被调用了两次,现在只需要一次即可。

结语

本文讲的是PHP的ob_start函数。

可以利用ob_start函数自由控制数据是否输出到页面。

最后编辑于:2023/03/14作者: 烽烟无限