php内置函数分析之strtoupper()、strtolower()
strtoupper():
1 PHP_FUNCTION(strtoupper)2 {3 zend_string *str;4 5 ZEND_PARSE_PARAMETERS_START(1, 1)6 Z_PARAM_STR(str)7 ZEND_PARSE_PARAMETERS_END();8 9 RETURN_STR(php_string_toupper(str)); 10 }
主要实现在 php_string_toupper()函数:
1 PHPAPI zend_string *php_string_toupper(zend_string *s)2 {3 unsigned char *c, *e;4 5 c = (unsigned char *)ZSTR_VAL(s); //字符串首地址6 e = c + ZSTR_LEN(s); // 字符串末尾之后的地址,指向字符串结束标志"\0"7 8 while (c < e) {9 if (islower(*c)) { //遇到第一个小写字符,则进入此if分支,对之后字符的操作都将在此if中完成 10 register unsigned char *r; 11 zend_string *res = zend_string_alloc(ZSTR_LEN(s), 0); //开辟内存存放zend_string类型数据 12 13 if (c != (unsigned char*)ZSTR_VAL(s)) { //c不是字符串首地址时,执行此if 14 memcpy(ZSTR_VAL(res), ZSTR_VAL(s), c - (unsigned char*)ZSTR_VAL(s)); //将c位置之前的字符数据复制给res 15 } 16 r = c + (ZSTR_VAL(res) - ZSTR_VAL(s)); // 开始进行转换的位置 17 // 下面的while中对每个字符都执行大写转换操作 18 while (c < e) { 19 *r = toupper(*c); 20 r++; 21 c++; 22 } 23 *r = '\0'; //为字符串添加结束标志 24 return res; //返回新字符串 25 } 26 c++; 27 } 28 return zend_string_copy(s); //原始字符串没有被操作,则返回原始字符串,并将引用+1 29 }
strtolower()与之类似。
php内置函数分析之strtoupper()、strtolower()相关推荐
- 【源码阅读】【苦练基本功】Golang内置函数分析
Golang package builtin 中内置函数我分为两部分介绍,第一部分为基础类型,第二部分为包含函数.接口,较复杂一些 第一部分 // bool is the set of boolean ...
- map内置函数分析所得到的思路
map:会根据提供的函数对指定序列做映射. map(func, *iterables) --> map objectMake an iterator that computes the func ...
- python中reversed是什么意思_Python内置函数reversed()用法分析
这篇文章主要介绍了Python内置函数reversed()用法,结合实例形式分析了reversed()函数的功能及针对序列元素相关操作技巧与使用注意事项,需要的朋友可以参考下 reversed()函数 ...
- [云炬python学习笔记]Numpy中内置函数min(),max(),sum()与Python中内置函数min(),max(),sum()性能对比分析
众所周知,Python有许多内置函数(例如min(),max(),sum()),Numpy也有自己的内置函数(np.min(),np.max(),np.sum()).由于Numpy的函数是在编译码中执 ...
- php 内置函数大全
https://www.cnblogs.com/zgxblog/p/10330808.html php内置函数大全 第2章 Apache函数 15 2.1 Apache信息获取类函数 15 2.1.1 ...
- *【内置】总结持续更新--php常用内置函数
使用思路:根据功能找函数,如 要做个文件管理器的话,首先确定使用和目录/文件相关的函数,画出来html页面看都有什么功能,再一次分析这些功能的实现 常量 手册中的位置:附录->保留字列表-> ...
- PHP:150个内置函数简单整合
共计整理150个函数 一.数学函数 11个 函数 说明 举例 结果 abs 绝对值 abs(45), abs(-45) 45, 45 ceil 向上取整 ceil(5.5) 6 floor 向下取整 ...
- 为什么说 Python 内置函数并不是万能的?
我们对比了两种创建列表的方法,即字面量用法 与内置类型用法 list,进而分析出它们在运行速度上的差异. 在分析为什么 list 会更慢的时候,文中说到它需要经过名称查找与函数调用两个步骤,那么,这就 ...
- python怎么用函数查看变量类型_查看变量类型的Python内置函数是()。
[单选题]下列不属于反射的是( ) [判断题]传统通俗史学有普及型和通俗型 [单选题]当前最流行和最受重视的资料分析是( ). [简答题]什么情况下采用斜视图比较合适? [单选题]下列命题正确的是( ...
最新文章
- 如何查看linux版本
- c#调用java开发的webservice_用C#.NET调用Java开发的WebService传递int,double问题
- 脚本事件中心与事件订阅器
- c++面试题之标准模板库
- 教你搞定补码不恢复余数除法中够减和商的关系
- Git之常见的标签操作
- 2020牛客国庆集训派对day3 Leftbest
- python函数星号参数
- 特斯拉上市十年回报率高达12倍,马斯克做对了什么?
- 《Javascript高级程序设计》读书笔记(1-3章)
- 工程流体力学笔记暂记35 (平板层流边界层和平板混合边界层)
- raw socket
- 理想费米气体的量子统计推导
- 机器人语音---走进优必选
- R语言--异常值检测
- 【南阳OJ分类之语言入门】80题题目+AC代码汇总
- PostMan中文插件支持8.12.2
- macos安装盘第三方工具制作_如何制作macOS High Sierra USB启动安装盘
- stack-es-标准篇-ElasticsearchClient-combined_fields
- jsp 页面进行debug 断点找错误