天天看點

PHP中strtr()和str_replace()的差別

轉:

strtr和str_replace同樣都是字元替換函數,以前沒怎麼用過strtr,今天看到一些朋友在BBS裡問strtr和str_replace 的差別,有些人說是效率不同,但鄙人感覺如果隻是效率不同的話,那麼就沒有必要讓那個效率低的函數存在了,他們到底是哪裡有差別呢?

鄙人親自實驗了一把來驗證他們的不同:

strtr:他的效率确實是比str_replace快,而且好象還是4到5倍呢,他的作用與其說是字元替換,還不如說是字元串改寫。

他有3個參數:

第一個參數是要被改寫的字元串源。

第二個參數是定位改寫從那裡開始(這個參數隻是确定改寫開始的地方,而不是要被改寫的字元,也就是說這裡的字元串長度與最終被改寫多少個字元無關)。

第三個參數是被改寫成的内容(最終要被改掉多少個字元,與他有關)。

例子:echo strtr(”abcdeabcf”,”abc”,”55″); 最終顯示55cde55cf,而不是55de55f,用str_replace的結果才是55de55f

str_replace:這個函數相信大家都已經無比了解了。str_replace(要被替換的字元(可以是array),要替換成的字元(可以是array),字元串源(可以是array)[,$替換次數(可選的變量或引用)])

建議等長度替換用strtr,不等長替換就用str_replace。