深入理解PHP字符串函數(shù)
我們大家知道無論哪種語言,字符串操作都是一個(gè)重要的基礎(chǔ),往往是簡單而重要。正像人說話一樣,一般有形體(圖形界面),有語言(print 字符串?),顯然字符串能解釋更多的東西。PHP提供了大量的字符串操作函數(shù),功能強(qiáng)大,使用也比較簡單, 以下將簡單的講述PHP字符串函數(shù)的功能和特性。
PHP字符串函數(shù)弱類型
PHP是弱類型語言,所以其它類型的數(shù)據(jù)一般可以直接應(yīng)用于字符串操作函數(shù)里,而自動(dòng)轉(zhuǎn)換成字符串類型,進(jìn)行處理,如:echo substr("1234567", 1, 3);和echo substr(123456,1, 3);是一樣的定義一般用雙引號(hào)或單引號(hào)標(biāo)識(shí)一個(gè)字符串。比如
- $str = "i love u";
- $str = 'i love u';
它者兩者是有一些區(qū)別的。后者將一切單引號(hào)的內(nèi)容都會(huì)當(dāng)作字符處理;前者則不然。比如
- $test = "iwind";
- $str = "i love $test";
- $str1 = 'i love $test';
- echo $str; //將得到 i love iwind
- echo $str1; //將得到 i love $test
同樣的以下兩個(gè)例子的行為也不一樣的:
- echo "i love test"; // 將得到 i love est,已經(jīng)將t視為轉(zhuǎn)義
- echo 'i love test'; // 將得到 i love test
#T#從而可以簡單認(rèn)為雙引號(hào)里的內(nèi)容是經(jīng)過“解釋”過的,單引號(hào)的是“所見即所得”的(特殊地,''會(huì)被認(rèn)作一個(gè)'')。顯而易見,雙引號(hào)形式的更為靈活一些,當(dāng)然單引號(hào)會(huì)適用于一些特殊的場合,這里就不作闡述了。輸出PHP里的輸出最常用的是echo,print.兩者都不是真正的函數(shù),而是語言構(gòu)造,所以調(diào)用時(shí)不必用雙括號(hào)(比如echo("test");print("test")).在輸出的時(shí)候兩者都可以實(shí)現(xiàn)賦值:echo $str="test";一方面輸出test,一方面把"test"賦給字符串變量 $strprint $str="test";兩者除了名字不一樣外,還是有其它區(qū)別的。print具有返回值,一直返回1,而echo沒有,所以echo比print要快一些:
- $return = print "test";
- echo $return; // 輸出1
也正因?yàn)檫@個(gè)原因,print能應(yīng)用于復(fù)合語句中,而echo不能:
- isset($str) or print "str 變量未定義"; // 將輸出"str 變量未定義"
- isset($str) or echo "str 變量未定義";// 將提示分析錯(cuò)誤
- echo一次可輸出多個(gè)字符串,而print則不可以:
- echo "i ","love ","iwind"; // 將輸出 "i love iwind"
- print "i ","love ","iwind"; // 將提示錯(cuò)誤
- echo,print還可以輸出被稱作“文檔句法”的字符串,句法如:
- echo <<< 標(biāo)簽名稱
PHP字符串函數(shù)內(nèi)容標(biāo)簽名稱;比如
- echo <<< test
- i love iwind
- test;
要注意的是語句開始和結(jié)束的兩個(gè)標(biāo)簽名稱是一樣的,且后一個(gè)標(biāo)簽名稱前不能有空白,即要頂格寫。文檔句法輸出的內(nèi)容識(shí)別變量名稱和常用符號(hào),大致形同雙引號(hào)的作用。輸出echo,print外,PHP還提供了一些格式化字符串的函數(shù),比如printf,sprintf,vprintf,vsprintf,在這里不作詳解。