Output Buffer (輸出緩沖)函數(shù)的妙用
[ 來源:奧索網(wǎng) |作者:Kh9 ]
在PHP編程中, 我們經(jīng)常會遇到一些直接產(chǎn)生輸出的函數(shù), 如passthru(),readfile(), var_dump() 等. 但有時我們想把這些函數(shù)的輸出導(dǎo)入到文件中,或者先經(jīng)過處理再輸出, 或者把這些函數(shù)的輸出作為字符串來處理. 這時我們要用到 Output Buffer(輸出緩沖) 函數(shù)了.
處理輸出緩沖的函數(shù)主要有這么幾個: ob_start() 開始輸出緩沖, 這時PHP停止輸出, 在這以后的輸出都被轉(zhuǎn)到一個內(nèi)部的緩沖里.
ob_get_contents() 這個函數(shù)返回內(nèi)部緩沖的內(nèi)容. 這等于把這些輸出都變成了字符串.
ob_get_ length() 返回內(nèi)部緩沖的長度.
ob_end_flush() 結(jié)束輸出緩沖, 并輸出緩沖里的內(nèi)容. 在這以后的輸出都是正常輸出.
ob_end_clean() 結(jié)束輸出緩沖, 并扔掉緩沖里的內(nèi)容.
舉個例子, var_dump()函數(shù)輸出一個變量的結(jié)構(gòu)和內(nèi)容, 這在調(diào)試的時候很有用. 但如果變量的內(nèi)容里有 < , > 等HTML的特殊字符, 輸出到網(wǎng)頁里看不見了. 怎么辦呢? 用輸出緩沖函數(shù)能很容易的解決這個問題.
ob_start(); var_dump($var); $out = ob_get_contents(); ob_end_clean();
這時var_dump()的輸出已經(jīng)存在 $out 里了. 你可以現(xiàn)在輸出:
echo ' . htmlspecialchars($out) . ' ;
或者等到將來, 再或者把這個字符串送到模板(Template)里再輸出.
來源:http://edu.chinaz.com