亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP源碼閱讀]trim rtrim ltrim函數

2020-03-22 17:56:08
字體:
來源:轉載
供稿:網友
  • trim系列函數是用于去除字符串中首尾的空格或其他字符。ltrim函數只去除掉字符串首部的字符,rtrim函數只去除字符串尾部的字符。

    trim

    string trim ( string $str [, string $character_mask = ' ' ] )

    參數說明

    character_mask
    默認是' '等空白字符。

    使用..可以指定一段范圍的字符。此處要注意,'..'左右兩邊是一對合法的范圍值,如果傳遞的是非法的值會報錯。

    運行示例

    先來看看用正常的使用:

    $str = 'hello..';$new_str = trim($str, '.'); // 結果是hello

    一個比較詭異的結果。這里報錯是因為php把..左右兩邊看作是范圍值,而此處'..'左邊是字符'.',PHP內部將認為其是一個缺少右邊界的范圍值。

    $str = 'hello...';$second_str = trim($str, '...'); // 報錯

    第二個參數使用合法的邊界值:

    $str = 'helloabcdefg';$new_str = trim($str, 'a..g'); // 輸出hello
    trim執行步驟

    trim、ltrim、rtrim三個函數都是調用了php_do_trim函數,區別在于第二個參數mode的不同。本文主要對trim函數進行分析,ltrim和rtrim函數跟trim的類似。然后php_do_trim會調用了php_trim來實現功能,因此trim函數的核心函數時php_trim函數。其執行步驟如下:

    1、根據what的值設置保存過濾字符的mask數組

    2、過濾在字符串首部的待過濾字符

    3、過濾在字符串尾部的待過濾字符

    php_trim函數執行的流程圖如下:

    源碼解讀

    php_trim函數先調用了php_charmask,這個函數試將過濾字符設置為mask[char] = 1的形式,這樣就是一個哈希數組,然后可用于后面的判斷。如果第二個參數是范圍值時,調用了memset函數給mask數組賦值。

    在用mode變量判斷是哪種過濾時,此處有一個小優化,在PHP內部使用的是與運算,而不是多個的判斷條件。該部分代碼如下:

        if (mode & 1) {        for (i = 0; i < len; i++) {            if (mask[(unsigned char)c[i]]) {                trimmed++;            } else {                break;            }        }        len -= trimmed;        c += trimmed;    }    if (mode & 2) {        for (i = len - 1; i >= 0; i--) {            if (mask[(unsigned char)c[i]]) {                len--;            } else {                break;            }        }    }

    判斷的過程:

    1 && 1 == 1 左邊需要過濾
    2 && 1 == 0 左邊不需要過濾
    3 && 1 == 1 左邊需要過濾
    1 && 2 == 0 右邊不需要過濾
    2 && 2 == 1 右邊需要過濾
    3 && 2 == 1 右邊需要過濾


    像這樣使用位操作可以提高程序的效率,而且代碼更加簡潔易讀。

    小結

    閱讀這個函數的源碼,首先學習到在C語言中,如果需要做鍵值對數組,而且鍵值是單個字符,可以使用unsigned char的類型做數組下標,這樣可以構造類似字符作為下標的映射數組。

    第二個就是使用位運算可以提高程序效率和代碼可讀性。

    原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。

    如果本文對你有幫助,請點下推薦吧,謝謝^_^

    最后,我在github有對PHP源碼更詳細的注解。感興趣的可以圍觀一下,給個star。PHP5.4源碼注解。

    PHP編程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产乱码久久久久久婷婷| 91精品美女在线| 日韩激情视频在线播放| 国产精品va在线播放我和闺蜜| 欧美老女人xx| 欧美大奶子在线| 亚洲女人初尝黑人巨大| 疯狂做受xxxx高潮欧美日本| 插插插亚洲综合网| 中文字幕亚洲第一| 日韩精品免费综合视频在线播放| 亚洲综合精品伊人久久| 亚洲国产成人精品久久久国产成人一区| 色妞一区二区三区| 精品国产一区二区三区在线观看| 97精品国产aⅴ7777| 国产精品吹潮在线观看| 国产z一区二区三区| 欧美日韩国产精品一区二区三区四区| 日韩中文字幕国产| 国产精品久久网| 日韩成人网免费视频| 亚洲天堂网站在线观看视频| 欧美乱人伦中文字幕在线| 欧洲成人在线视频| 欧美成年人视频网站| 色综合伊人色综合网站| 久久香蕉国产线看观看av| 欧美精品一二区| 欧美激情在线一区| 中文字幕国产亚洲| 777午夜精品福利在线观看| 亚洲色图第三页| 97国产成人精品视频| 中文字幕一区日韩电影| 亚洲欧美中文字幕在线一区| 国产精品久久久久99| 亚洲欧美中文日韩在线v日本| 欧美多人乱p欧美4p久久| 亚洲人成亚洲人成在线观看| 欧美小视频在线观看| 国产精品扒开腿做爽爽爽的视频| 亚洲jizzjizz日本少妇| 亚洲一区二区三区在线视频| 久久久久久亚洲精品不卡| 亚洲一区二区免费在线| 丝袜美腿亚洲一区二区| 亚洲视频在线免费看| 欧美精品在线看| 色妞欧美日韩在线| 欧美激情精品久久久久久变态| 最近的2019中文字幕免费一页| 国产精品99蜜臀久久不卡二区| 日韩经典中文字幕在线观看| 亚洲精品一区二区在线| 国产精品男女猛烈高潮激情| 欧美成人中文字幕| 日韩禁在线播放| 亚洲精品乱码久久久久久按摩观| 久久综合免费视频影院| 亚洲乱码国产乱码精品精天堂| 国产精品视频地址| 久久精品中文字幕免费mv| 久久久精品一区二区三区| 日韩在线免费视频观看| 国产午夜精品免费一区二区三区| 亚洲第一区中文99精品| 国产精品高精视频免费| 成人久久久久久久| 国产日韩欧美电影在线观看| 欧美精品成人91久久久久久久| 欧美激情综合亚洲一二区| 亚洲码在线观看| 91免费看片在线| 国产精品成人观看视频国产奇米| 日本中文字幕不卡免费| 久久久久久久久久久免费| 欧美小视频在线观看| 欧美激情免费看| 青青在线视频一区二区三区| 成人疯狂猛交xxx| 国产成人精品视| 亚洲男人av电影| 4438全国亚洲精品在线观看视频| 国产成人一区二区三区小说| 中文字幕无线精品亚洲乱码一区| 亚洲午夜未满十八勿入免费观看全集| 久久精品国产一区二区三区| 色噜噜狠狠狠综合曰曰曰88av| 亚洲一品av免费观看| 国产欧美欧洲在线观看| 日韩av电影在线免费播放| 日韩中文字幕精品视频| 日韩亚洲欧美中文高清在线| 亚洲男人天堂九九视频| 最新国产成人av网站网址麻豆| 中文字幕日韩在线播放| 久久精品影视伊人网| 在线电影中文日韩| 日产精品99久久久久久| 青青精品视频播放| 91亚洲精品在线| 中文字幕精品在线视频| 欧美日韩激情视频8区| 欧美精品在线观看| 久久精品欧美视频| 亚洲黄在线观看| 欧美日韩激情网| 日本免费在线精品| 精品国产欧美一区二区三区成人| 国产在线精品成人一区二区三区| 国产美女直播视频一区| 日韩av男人的天堂| 成人黄色av网| 欧美国产日产韩国视频| 51色欧美片视频在线观看| 91福利视频网| 亚洲成人黄色网址| 欧美精品在线免费观看| 国产精品丝袜一区二区三区| 久久综合久久美利坚合众国| 亚洲男人天堂2024| 国产精品成人v| 亚洲精品一区二区久| 欧美中文在线观看| 色综合导航网站| 影音先锋欧美在线资源| 高清欧美一区二区三区| 57pao国产精品一区| 日产日韩在线亚洲欧美| 狠狠躁天天躁日日躁欧美| 国产精品视频公开费视频| 国产精品扒开腿做爽爽爽男男| 国产精品美乳一区二区免费| 按摩亚洲人久久| 亚洲人成电影网站色…| 日本人成精品视频在线| 国产91精品网站| 欧美精品亚州精品| 日韩欧美成人精品| 久久久午夜视频| 亚洲乱亚洲乱妇无码| 精品国产欧美成人夜夜嗨| 国产拍精品一二三| 91精品国产色综合久久不卡98| 国产在线观看91精品一区| 91夜夜揉人人捏人人添红杏| 奇米成人av国产一区二区三区| 精品亚洲男同gayvideo网站| 国产丝袜高跟一区| 久久影视电视剧免费网站| 国产福利精品视频| 欧美老女人在线视频| 日韩在线精品视频| 久久久久久久国产精品视频| 95av在线视频| 久久不射电影网| 国产精品日韩欧美大师| 日韩视频免费在线观看| 欧美激情精品久久久久久| 激情亚洲一区二区三区四区| 久久久亚洲精选| 欧美成人午夜剧场免费观看| 中文在线资源观看视频网站免费不卡|