高效率的PHP寫法(字串)

話說,這圖醜嗎?
一.字串
1.1 少用正則表示式
能用PHP 內部字串操作函式 的情況下,儘量用他們,不要用正則表示式, 因為其效率高於正則。
沒得說,正則最耗效能。
str_replace函式要比preg_replace快得多,strtr函式又比str_replace來得快。
有沒有你漏掉的好用的函式?
例如:strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strripos()。
1.2 字元替換
如果需要轉換的全是 單個字元 ,用字串作為 strtr() 函式完成替換,而不是陣列:

效率提升:10 倍。
str_replace字元替換比正則替換preg_replace快,但strtr比str_replace又快1/4。
另外,不要做無謂的替換,即使沒有替換,str_replace也會為其引數分配記憶體。很慢!
用strpos先查詢(非常快),看是否需要替換,如果需要,再替換。
如果需要替換,效率幾乎相等,差別在0.1%左右。
如果不需要替換:用strpos快200%。
1.3 壓縮大的字串
使用 gzcompress() 和 gzuncompress() 對容量大的字串進行壓縮和解壓,再 存入和取出資料庫 。
這種內建的函式使用gzip演算法,能壓縮字串90%。
1.4 echo 輸出
echo 字串用 逗號 代替點連線符更快些。
雖然,echo是一種語言結構,不是真正的函式。
但是,它可以把逗號隔開的多個字串當作“函式”引數傳入,所以速度會更快。

1.5 儘量用單引號
PHP 引擎允許使用單引號和雙引號來封裝字串變數,但是它們的速度是有很大的差別的!
使用雙引號的字串會告訴 PHP 引擎,首先去讀取字串內容,查詢其中的變數,並改為變數對應的值。
一般來說字串是沒有變數的,使用雙引號會導致效能不佳。
最好使用字串連線,而不是雙引號字串。
$output ="This is a plain string";// 不好的實踐
$output ='This is a plain string';// 好的實踐
$type ="mixed";// 不好的實踐
$output ="This is a $type string";$type ='mixed';// 好的實踐
$output ='This is a '. $type .' string';
1.6 使用isset代替strlen
在檢驗字串長度時,我們第一想法會使用 strlen() 函式。
此函式執行起來相當快,因為它不做任何計算,只返回在zval結構(C的內建資料結構,用於儲存PHP變數)中儲存的已知字串長度。
但是,由於strlen()是函式,多多少少會有些慢,因為函式呼叫會經過諸多步驟,如字母小寫化、雜湊查詢,會跟隨被呼叫的函式一起執行。
在某些情況下,你可以使用 isset() 技巧加速執行你的程式碼。例如:

1.7 用split分割字串
在分割字串時,split()要比explode()快。

1.8 echo效率高於print
因為echo沒有返回值,print返回一個整型。
注意:echo輸出大字串的時候,如果沒有調整就會嚴重影響效能。
開啟Apache的mod_deflate進行壓縮,或者開啟ob_start將內容放進緩衝區,可以改善效能問題。