1 字符串分割——split()函數和preg_split()函數
split — 用正則表達式將字符串分割到數組中——貌似PHP5.3以上已不贊成使用
array split ( string $pattern , string $string [, int $limit ] )
preg_split — 通過一個正則表達式分隔字符串
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
相同點:都是用正則表達式來分割字符串。
split()用起來更簡單,比如分割"2008-12-16 15:48:12",split可以這麼寫split(['- :'])
而preg_split()要復雜些,就得這麼寫preg_split("/[\s-:]/")
原因是:split()只支持POSIX風格的正則表達式,而preg_split只支持Perl風格的正則表達式
POSIX風格要比Perl風格的簡單,但它不是二進制安全的
對了,還有個explode(),和上面兩個函數不同,它是用字符串來分割字符串。
array explode ( string $delimiter , string $string [, int $limit ] )
使用一個字符串分割另一個字符串
注:網上有好多二進制安全的解釋,我感覺下面這個解釋對於理解上面那句話有幫助:
二進制安全的函數只關心二進制化的字符串,不關心字符串的具體格式,它只會嚴格的按照二進制的數據進行存取,不會以某種特殊格式解析數據。
2 mysqli::fetch_array 和mysqli::fetch_row的區別
mysqli_result::fetch_row()
從結果集中取得一行作為枚舉數組
mixed mysqli_result::fetch_array ([ int $resulttype = MYSQLI_BOTH ] )
從結果集中取得一行作為關聯數組,或數字數組,或二者兼有
手冊說兩者性能貌似沒有太大的區別,前者是後者的增強版。
3 單引號和雙引號
php的兩種字符串類型,單引號和雙引號。
單引號的字符串是純文本(真正的文本),它會不經修改而直接發送給浏覽器,不管是變量名稱還是其它任何文本。
雙引號的字符串,php會嘗試計算雙引號字符串,其中的變量名稱將被變量值所代替。
在這裡,變量、字符串、文本和原始數據的概念不能混淆:
變量是表示數據的符號,變量用變量名稱表示,表示數據的符號
而單引號的字符串則是文本,本身(字面值)就是原始數據
關鍵是理解文本和變量的區別,文本是數據,變量是數據的符號。
可以看看《PHP和MySQL Web開發(原書第4版)》中文版第12頁對於字符串的介紹。
參考:
《PHP和MySQL Web開發(原書第4版)》中文版第12頁,Luke Welling & Laura Thomson著
php二進制字符串的含義 http://www.lofter.com/postentry?from=search&permalink=139418_34c583
知乎:二進制安全是什麼意思? http://www.zhihu.com/question/28705562