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

首頁 > 編程 > PHP > 正文

php trim函數(shù)的詳細(xì)解析

2020-03-22 20:29:09
字體:
供稿:網(wǎng)友

本篇文章給大家?guī)淼膬?nèi)容是關(guān)于php trim函數(shù)詳細(xì)解析,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。

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

trim函數(shù)的定義如下:

trim是兩邊去除,還有l(wèi)trim 從左邊去除,rtrim從右邊去除,在php源碼中,最終都是通過一個(gè)函數(shù)處理的。所以一下關(guān)于trim是對php 內(nèi)部統(tǒng)一的trim而言。

源碼在ext/standard/string.c中php_trim函數(shù)中。

trim函數(shù)處理邏輯:

1、判斷是否設(shè)置去除內(nèi)容what,沒設(shè)置則去除默認(rèn)字符串

2、判斷去除內(nèi)容的長度,分為1個(gè)字符,多個(gè)字符去除

3、使用model分別與1,2按位與運(yùn)算,確定是否進(jìn)行左右去除

去除一個(gè)字符的情況:

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

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

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

去除多個(gè)字符串的情況:

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

默認(rèn)情況:

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

看到這里,我們所了解到的有一下幾點(diǎn):

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

2、trim 給定單個(gè)字符是一個(gè)循環(huán)操作,循環(huán)結(jié)束條件是第一個(gè)不相等的字符

3、trim 多個(gè)字符去除,是循環(huán)去除,直到遇到第一個(gè)不在列表中的字符。

在來看php_charmask這個(gè)函數(shù)

中間省略部分可以不看,只是對非法數(shù)據(jù)的一個(gè)錯(cuò)誤返回。

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

下面幾個(gè)實(shí)際的輸出更容易理解:

1、trim(‘a(chǎn)bcdf’ , ‘fd’); 輸出abc,trim不是按順序的,只要在列表內(nèi),統(tǒng)統(tǒng)去掉

2、trim(‘a(chǎn)bccdffff’ , ‘f’); 輸出abccd, trim會(huì)把所有滿足條件的去掉

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

trim去除列表的性質(zhì),在多字節(jié)處理的時(shí)候就會(huì)出現(xiàn)問題了,這也就是為什么trim對于中文會(huì)產(chǎn)生亂碼。

trim(‘品、’ , ‘、’),‘品’ utf字符十六進(jìn)制表示為’e5 93 81’, 字符串’、‘的十六進(jìn)制表示’e3 80 81’。在trim中,按字節(jié)計(jì)算,utf8中文編碼3個(gè)字節(jié)表示一個(gè)漢字。因此相當(dāng)于trim去掉內(nèi)容是三個(gè)字符。這三個(gè)字符的十六進(jìn)制表示為’e3 80 81’。所以最終返回字符串的十六進(jìn)制表示為’e5 93’,因?yàn)?1已經(jīng)被去除了。

trim(‘的、’, ‘、’) 就能返回正確結(jié)果。因?yàn)椤摹氖M(jìn)制表示’e7 9a 84’。

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

以上就是php trim函數(shù)的詳細(xì)解析的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 伊人一二三四区 | 国产一区精品在线观看 | 欧美日韩在线免费观看 | 成人9禁啪啪无遮挡免费 | 羞羞视频免费视频欧美 | 国产成人高潮免费观看精品 | 成人福利视频在线 | 午夜人体| av电影网站在线观看 | 久久毛片 | www亚洲免费| 牛牛热这里只有精品 | arabxxxxvideos | 欧美wwwwww| 草莓视频在线导航 | 91久久国产露脸精品免费 | 欧美人xx| 中文字幕一区在线观看视频 | 久草在线新时代视觉 | 亚洲精品久久久久久下一站 | 黄色特级片黄色特级片 | www.99久久久| 国产精品免费一区二区三区四区 | 成人不卡在线观看 | 91网站链接 | 亚洲国产视频网 | 中国女人内谢69xxxx天美 | 亚洲精品一二三区 | 91精品国产综合久久青草 | av免费在线播放 | 久久精品综合视频 | 一级成人欧美一区在线观看 | 国产毛片网站 | 一级黄色影院 | 日本网站一区二区三区 | 羞羞答答xxdd在线播放 | 色婷婷av一区二区三区久久 | 中文字幕综合 | 亚洲片在线 | 操碰网 | www.com超碰 |