麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

php trim函數的詳細解析

2024-09-04 11:49:45
字體:
來源:轉載
供稿:網友

本篇文章給大家帶來的內容是關于php trim函數的詳細解析,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

字符串的處理在任何程序中應該是最最常見的了吧。php 的trim函數就是用來去除字符串的字符串。最常用的就是去除空格了。但是,這個簡單的函數,是否真的像你認為的那樣簡單呢?

trim函數的定義如下:

trim是兩邊去除,還有ltrim 從左邊去除,rtrim從右邊去除,在php源碼中,最終都是通過一個函數處理的。所以一下關于trim是對php 內部統一的trim而言。

源碼在ext/standard/string.c中php_trim函數中。

trim函數處理邏輯:

1、判斷是否設置去除內容what,沒設置則去除默認字符串

2、判斷去除內容的長度,分為1個字符,多個字符去除

3、使用model分別與1,2按位與運算,確定是否進行左右去除

去除一個字符的情況:

對于左邊去除,遍歷字符串的每個字符,把第一個與what不相等的字符的位置作為新字符串的起始位置,同時更新長度

對右邊去除,從右邊開始遍歷,找到第一個不等于what的字符,把字符串長度減去遍歷次數。

到這里,新字符串起始位置有了,長度也確定了,然后執行字符串賦復制命令,返回去除之后的字符串

去除多個字符串的情況:

首先使用一個mask數據,用于標記那些需要去除的字符串(mask 可以理解為一個以字符ascii值為鍵值的hash表)。 然后執行操作跟去除一個字符類似,只是結束條件是尋找到第一個不在字符表里的元素。

默認情況:

處理方式跟之前一樣,只是去除內容限制在ascii碼小于32(即空格)的字符。且只去除’/r’,’/t’,’/v’,’/0’,’/n’字符

看到這里,我們所了解到的有一下幾點:

1、trim 默認去除’/r’,’/t’,’/v’,’/0’,’/n’

2、trim 給定單個字符是一個循環操作,循環結束條件是第一個不相等的字符

3、trim 多個字符去除,是循環去除,直到遇到第一個不在列表中的字符。

在來看php_charmask這個函數

中間省略部分可以不看,只是對非法數據的一個錯誤返回。

只要看第一個if的內容。如果字符串假設傳入內容what=‘a…f’。input指針指向a,這個時候滿足if條件,在里面執行的操作相當于把a,b,c,d,e,f內容添加到mask中去。所以所trim是可以指定去除區間的trim(‘abcdefg’,‘a…f’)返回內容只剩下g。

下面幾個實際的輸出更容易理解:

1、trim(‘abcdf’ , ‘fd’); 輸出abc,trim不是按順序的,只要在列表內,統統去掉

2、trim(‘abccdffff’ , ‘f’); 輸出abccd, trim會把所有滿足條件的去掉

3、trim(‘abcdffff’ , ‘a…d’); 輸出內容ffff, trim可以指定區間,但是如果你真的想要去除’a…d’,就不能用trim了

trim去除列表的性質,在多字節處理的時候就會出現問題了,這也就是為什么trim對于中文會產生亂碼。

trim(‘品、’ , ‘、’),‘品’ utf字符十六進制表示為’e5 93 81’, 字符串’、‘的十六進制表示’e3 80 81’。在trim中,按字節計算,utf8中文編碼3個字節表示一個漢字。因此相當于trim去掉內容是三個字符。這三個字符的十六進制表示為’e3 80 81’。所以最終返回字符串的十六進制表示為’e5 93’,因為81已經被去除了。

trim(‘的、’, ‘、’) 就能返回正確結果。因為’的’的十六進制表示’e7 9a 84’。

所以trim并不簡單。要時刻記著,trim是去除列表內的所有字符,遇到第一個非列表字符停止!!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日本一区二区在线 | 中文字幕免费在线观看视频 | 亚洲电影免费观看国语版 | 精品久久久久久久久久中文字幕 | 国产深夜福利视频在线播放 | 蜜桃网站在线 | 超碰一区 | 欧美精品成人一区二区三区四区 | 精品国产91久久久久久久妲己 | 欧美女优一区 | 一本色道久久综合狠狠躁篇适合什么人看 | hd极品free性xxx护士人 | 亚洲综人网 | 国产精品久久久久久久久久东京 | 日本在线视频二区 | 女人叉开腿让男人桶 | xxx18hd18hd日本 | 国产一级在线免费观看 | 史上最强炼体老祖动漫在线观看 | xx53xx | 中文字幕一区二区三区四区 | 久久久久久久九九九九 | 欧美精品18| 欧美视频99 | 香蕉视频网站在线观看 | 国产一级毛片高清视频 | 中国av免费在线观看 | 亚洲第五色综合网 | 多人乱大交xxxxx变态 | 成人 精品 | 亚洲精中文字幕二区三区 | 综合网日日天干夜夜久久 | 免费中文视频 | 精品一区二区三区免费爱 | 久久久久久久一区二区三区 | 中文字幕亚洲欧美 | 激情视频免费看 | av影院在线播放 | 粉嫩粉嫩一区二区三区在线播放 | 亚洲一区二区三区四区精品 | 成人毛片免费播放 |