ob_start()、ob_clean()和ob_get_contents()的区别

ob_start()、ob_clean()和ob_get_contents()的区别

白骆铭
2017-10-27 / 0 评论 / 1,000 阅读 / 正在检测是否收录...

对新手来说,缓冲的概念太复杂了。因为压根不懂整个PHP流程,更何况是缓存呢。我来给你解释一下这玩意儿的玩法。
举个非常简单的例子,代码如下:

echo '123';
echo '456';

这两行代码执行的时候,是马上显示到页面上的(准确讲是马上传输给客户端的)
假如你需要把这两行代码的内容放到一个变量里,你会想到这个方法:

$a = '123456';
echo $a;

但是ob_start(); ob_clear(); ob_get_contents();这三个函数配合一下,不管你前面输出什么玩意儿,都能控制到一个变量里。
ob_clear();//这个是忽略掉前面所有的输出,相当于说,前面本来要显示在页面里的东西全都被清除了,不显示了。
ob_start(); //告诉php这里开始要记录输出的玩意儿了,并且所有输出放到连续的内存块里。
ob_get_contents();//这个应该比较容易懂,就是取出从ob_start()函数开始的地方到这个函数之间所有输出的内容,$a = ob_get_contents(); $a就是前面所有输出的字符串连接在一起。
这个有什么用呢?比如验证码图片,验证码图片在header出来的时候,不能有其他字符串输出,那么用ob_clear()执行一下,可以保证图片的正确性
在一些PHP框架里面,有时候直接输出模板,而是要返回模板结果,一般也是用这三个函数配合起来使用,然后返回结果

<?php
    ob_start();
    echo "Hello";
    echo "Neal";

    $a = ob_get_contents();

    ob_clean();

    echo "tip:".$a;
?>
0

评论 (0)

取消