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怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号