首页 > Web开发 > 详细

php字符串查找函数zend_memnstr

时间:2015-07-02 12:08:53      阅读:389      评论:0      收藏:0      [点我收藏+]
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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!