当前位置: 首页 > 后端技术 > PHP

php7源码阅读(三)——字符串函数阅读

时间:2023-03-29 22:58:03 PHP

String是php中常用的类型,今天开始阅读它的函数。首先在/ext/standard/string.c文件中定义了string的功能,我这里看到的php版本是php7.1.2。首先对于php源码中的函数,定义方法为PHP_FUNCTION(方法名)源码:strtolower和strtoupper这两个函数的源码比较简单,但是PHPAPIchar*php_strtoupper(char*s,size_tlen出现在文件中)PHPAPIzend_string*php_string_toupper(zend_string*s)又出现了。他们代码的主要算法是一样的,只不过在strtoupper方法处是这样写的PHP_FUNCTION(strtoupper){zend_string*arg;ZEND_PARSE_PARAMETERS_START(1,1)Z_PARAM_STR(arg)ZEND_PARSE_PARAMETERS_END();RETURN_STR(php_string_toupper(arg));}所以这个函数应该是php_string_toupper,至于php_strtoupper,这个函数可能是为一些内部方法提供的接口PHPAPIzend_string*php_string_toupper(zend_string*s){unsignedchar*c,*e;//c为字符串的起始位置,e为字符串的结束位置c=(unsignedchar*)ZSTR_VAL(s);//返回zeng_tring类型中数据部分val的值,即字符串的首地址e=c+ZSTR_LEN(s);//因为e定义了指针类型,e的地址是字符串的首地址+字符串的长度,也就是'\0'的地址//这里用的是COW,即copywhile写的(c当前c指向的字符串的地址,这部分地址数据被复制到resr=c+(ZSTR_VAL(res)-ZSTR_VAL(s));//定义开始字符大小转换的标记,即从哪个地址开始字符串转换while(c

猜你喜欢