php字串尋找函數zend_memnstr

來源:互聯網
上載者:User
Zend/zend_operators.h:
static inline char * zend_memnstr(char *haystack, char *needle, int needle_len, char *end){     //字元首指標     char *p = haystack;     //最後一個字元     char ne = needle[needle_len-1];      //減小查詢範圍,判斷needle_len應該小於end還算比較巧妙哦     end -= needle_len;     while (p <= end) {        //在數組的前n個位元組中搜尋字元 memchr(p, *needle, (end-p+1))            if ((p = (char *)memchr(p, *needle, (end-p+1))) && ne == p[needle_len-1]) {            //如果找到首位元組並且最後一個位元組相同            if (!memcmp(needle, p, needle_len-1)) {                //對比找到啦那麼返回首指標                return p;            }        }        if (p == NULL) {            return NULL;        }        p++;    }    return NULL;}

php函數strpos、explode都用到了此函數,具體代碼可以查看:ext/standard/string.c

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.