码迷,mamicode.com
首页 > Web开发 > 详细

php字符串查找函数zend_memnstr

时间:2015-07-02 12:11:26      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:zend_api   php内核   php扩展   

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

php字符串查找函数zend_memnstr

标签:zend_api   php内核   php扩展   

原文地址:http://blog.csdn.net/pangudashu/article/details/46723697

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!