PHP二進制安全的含義

PHP裏,有string的概念。 安全

string裏,每一個字符的大小爲byte(與PHP相比, J啊v阿德每一個字符爲Character,是UTF8字符,C語言的每一個字符能夠在編譯時選擇)。 函數

byte裏,有ASCII代碼的字符, 例如ABC, 123, abc ,也有一些特殊字符,例如回車,退格之類的 編碼

特殊字符不少是不能顯示的。或者說, 他們呢的顯示方式沒有標準,例如編碼65到哪兒都是字母A,編碼97到哪兒否時字符a, 退格在有的地方顯示成一個符號, 在有的地方救活真的把前一個字符退掉。 文檔

PHP以C爲基礎,因此不少描述都是以C爲對比。C的字符串裏, 一種經典的定義就是, 以編碼0做爲字符串的結尾。那麼,假設這樣一個string裏面3個字符的編碼分別是97,0,97。那麼,c裏面若是有str_replace等效的函數,利用它把97換成98,那麼這個函數讀到0的時候,就認爲已經結束了,就會獲得98,0,97。跟它對應的,PHP裏面的str_replace是二進制安全的,那麼這個0是不會被視爲特殊的結束符號,因而結果就是98,0,98。 字符串

『二進制安全』在PHP文檔裏面,基本上就是這麼一個意思:C語言裏面的功能相似的函數會對有的字符特別處理,而PHP這個函數對於全部字符一視同仁, 不用擔憂會有特殊字符影響處理,特別不用擔憂編碼0字符 string

相關文章
相關標籤/搜索