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
