日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php中ob函数的用法

發布時間:2023/12/31 php 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php中ob函数的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

與輸出緩沖區有關的配置
  在PHP.INI中,有兩個跟緩沖區緊密相關的配置項
  1.output_buffering
    該配置直接影響的是php本身的緩沖區,有3種配置參數.on/off/xK(x為某個整型數值);
    on - 開啟緩沖區
    off - 關閉緩沖區
    256k - 開啟緩沖區,而且當緩沖區的內容超過256k的時候,自動刷新緩沖區(把數據發送到apache);

  2.implicit_flush
    該配置直接影響apache的緩沖區,有2種配置參數. on/off
    on - 自動刷新apache緩沖區,也就是,當php發送數據到apache的緩沖區的時候,不需要等待其他指令,直接就把輸出返回到瀏覽器
    off - 不自動刷新apache緩沖區,接受到數據后,等待刷新指令

而默認直接是開啟緩沖區的,所以我們可以直接不用ob_start(),所以我先把緩沖區關閉

下面幾個函數的用法

  • ob_start() - 打開緩沖區
  • ob_get_contents() - 返回輸出緩沖區的內容
  • ob_flush() - 沖刷出(送出)輸出緩沖區中的內容
  • ob_clean() - 清空(擦掉)輸出緩沖區
  • ob_end_flush() - 沖刷出(送出)輸出緩沖區內容并關閉緩沖
  • ob_end_clean() - 清空(擦除)緩沖區并關閉輸出緩沖
  • flush() - 刷新輸出緩沖 

ob_start()在服務器打開一個緩沖區來保存所有的輸出。所以在任何時候使用echo ,輸出都將被加入緩沖區中,直到程序運行結束或者使用ob_flush()來結束。然后在服務器中緩沖區的內容才會發送到瀏覽器,由瀏覽器來解析顯示。

ob_start();echo "Hello ";$out1 = ob_get_contents();echo "World";$out2 = ob_get_contents();

輸出:

Hello World

如果只是想要存儲緩存區而不是輸出的話加上ob_end_clean();

ob_start();echo "Hello ";$out1 = ob_get_contents();echo "World";$out2 = ob_get_contents();ob_end_clean();

可以看到瀏覽器上沒有任何輸出,這時我們加上var_dump來看看out1、out2兩個變量

ob_start();echo "Hello ";$out1 = ob_get_contents();echo "World";$out2 = ob_get_contents();ob_end_clean(); var_dump($out1, $out2);

輸出:

string(6) "Hello " string(11) "Hello World"

接下來講ob_clean()跟ob_end_clean()的區別

使用 ob_end_clean()

ob_start();echo "Hello ";$out1 = ob_get_contents();echo "World1";$out2 = ob_get_contents();ob_end_clean();echo "World2<br>"; echo "World3<br>";$out3 = ob_get_contents();var_dump($out3);

輸出:

World2 World3 bool(false)

使用 ob_clean()

ob_start();echo "Hello ";$out1 = ob_get_contents();echo "World1";$out2 = ob_get_contents();ob_clean();echo "World2<br>"; echo "World3<br>";$out3 = ob_get_contents();var_dump($out3);

輸出:

World2 World3 string(20) "World2 World3 "

這里我們對out3使用轉義函數

var_dump(htmlentities($out3));

輸出:

World World string(32) "World<br/>World<br/>"

解釋

ob_end_clean() 跟ob_clean() 都是清空了緩沖區,不讓echo輸出到瀏覽器,這是共同點,而不同點是ob_end_clean()還關閉了緩沖區

接下來講ob_end_flush()跟ob_flush()跟flush()的區別

使用ob_end_flush()

ob_start();echo "Hello<br/>";$out1 = ob_get_contents();echo "World1<br/>";$out2 = ob_get_contents();ob_end_flush();echo "World2<br/>"; echo "World3<br/>";$out3 = ob_get_contents();var_dump(htmlentities($out3));

輸出

Hello World1 World2 World3 string(0) ""

補充:這里為了顯示容易觀察,我全部都給了<br>

使用ob_flush()

ob_start();echo "Hello<br/>";$out1 = ob_get_contents();echo "World1<br/>";$out2 = ob_get_contents();ob__flush();echo "World2<br/>"; echo "World3br/>";$out3 = ob_get_contents();var_dump(htmlentities($out3));

輸出

Hello World1 World2 World3 string(32) "World2<br/>World3<br/>"

使用flush()

ob_start();echo "Hello<br/>";$out1 = ob_get_contents();echo "World1<br/>";$out2 = ob_get_contents();flush();echo "World2<br/>"; echo "World3br/>";$out3 = ob_get_contents();var_dump(htmlentities($out3));

輸出

Hello World1 World2 World3 string(67) "Hello<br/>World1<br/>World2<br/>World3<br/>"

區別

可以看出ob_end_flush() 是輸出了緩沖區的內容并且關閉了緩沖區,而ob_flush()只是刷出了緩沖區內容,相當于將緩沖區清空,而flush()輸出了緩沖區內容也沒有將緩沖區清空,所以下面的緩沖區內容還會繼續追加。

總結

只能在實踐中繼續成長,有什么不對的地方望大家指出。

總結

以上是生活随笔為你收集整理的php中ob函数的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。