PHP是一種廣泛使用的編程語(yǔ)言,在其語(yǔ)法結(jié)構(gòu)中具備很多字符串處理函數(shù),explode()是其中之一。通過(guò)使用explode()函數(shù),可以將一個(gè)字符串按照指定的分隔符進(jìn)行切割,變成一個(gè)數(shù)組。
例如,我們可以使用explode()函數(shù)對(duì)“北京,上海,廣州,深圳”這個(gè)字符串進(jìn)行切割,將其變?yōu)閿?shù)組$city。代碼如下:
$string = "北京,上海,廣州,深圳"; $city = explode(",",$string); print_r($city);
執(zhí)行上述代碼會(huì)得到下面的輸出結(jié)果:
Array ( [0] =>北京 [1] =>上海 [2] =>廣州 [3] =>深圳 )
代碼中,我們使用了explode()函數(shù)將字符串按照逗號(hào)分隔符進(jìn)行了切割,切割后的結(jié)果存放在變量$city中。運(yùn)行print_r()函數(shù)可以查看得到$city數(shù)組中的所有元素。
然而,如果將切割符改為回車符“\n”,那么會(huì)發(fā)現(xiàn)切割結(jié)果異常。
$string = "北京\n上海\n廣州\n深圳"; $city = explode("\n",$string); print_r($city);
執(zhí)行上述代碼會(huì)得到下面的輸出結(jié)果:
Array ( [0] =>北京 [1] =>上海 [2] =>廣州 [3] =>深圳 )
事實(shí)上,我們已經(jīng)成功使用了explode()函數(shù)對(duì)回車符進(jìn)行了切割,并得到了正確的結(jié)果。
那么為什么這里要談到這個(gè)例子呢?答案是:這是因?yàn)樵诓煌沫h(huán)境下,回車符的表示形態(tài)是不同的。如果不注意這一點(diǎn),代碼容易因此出現(xiàn)錯(cuò)誤。
比如,在Windows系統(tǒng)下,回車符表示為“\r\n”,但在Linux系統(tǒng)下,回車符只表示為“\n”。如果你在 Windows 系統(tǒng)下編寫(xiě)代碼,且使用“\n”作為切割符號(hào),將得到錯(cuò)誤的切割結(jié)果。這時(shí)候應(yīng)該改為使用“\r\n”,或者建議使用PHP內(nèi)置常量PHP_EOL。
應(yīng)該注意的是,PHP_EOL僅保證您的代碼在不同的平臺(tái)上正確,但是不保證將代碼分享到其他人后,其他人使用不同的操作系統(tǒng)得出的結(jié)果與您相同。因?yàn)镻HP_EOL不是在所有平臺(tái)上都具有相同的意義。
下面為您列出PHP_EOL的常見(jiàn)取值:
---------Windows PHP_EOL: \r\n ---------Linux PHP_EOL: \n ---------Mac PHP_EOL: \r
總結(jié)來(lái)說(shuō),explode()函數(shù)是非常常用的一個(gè)字符串處理函數(shù),可以幫助我們將一個(gè)字符串切割成數(shù)組。在使用explode()函數(shù)時(shí),需要注意切割符的不同表現(xiàn)形式,在不同操作系統(tǒng)中常量的定義值也是不一樣的,需要注意常量的使用。