ホームページ  >  記事  >  バックエンド開発  >  PHP文字列検索関数 zend_memnstr

PHP文字列検索関数 zend_memnstr

WBOY
WBOYオリジナル
2016-06-23 13:31:40985ブラウズ

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 で参照できます。ブロガーの許可なく転載されています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。