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()相关推荐

  1. 【源码阅读】【苦练基本功】Golang内置函数分析

    Golang package builtin 中内置函数我分为两部分介绍,第一部分为基础类型,第二部分为包含函数.接口,较复杂一些 第一部分 // bool is the set of boolean ...

  2. map内置函数分析所得到的思路

    map:会根据提供的函数对指定序列做映射. map(func, *iterables) --> map objectMake an iterator that computes the func ...

  3. python中reversed是什么意思_Python内置函数reversed()用法分析

    这篇文章主要介绍了Python内置函数reversed()用法,结合实例形式分析了reversed()函数的功能及针对序列元素相关操作技巧与使用注意事项,需要的朋友可以参考下 reversed()函数 ...

  4. [云炬python学习笔记]Numpy中内置函数min(),max(),sum()与Python中内置函数min(),max(),sum()性能对比分析

    众所周知,Python有许多内置函数(例如min(),max(),sum()),Numpy也有自己的内置函数(np.min(),np.max(),np.sum()).由于Numpy的函数是在编译码中执 ...

  5. php 内置函数大全

    https://www.cnblogs.com/zgxblog/p/10330808.html php内置函数大全 第2章 Apache函数 15 2.1 Apache信息获取类函数 15 2.1.1 ...

  6. *【内置】总结持续更新--php常用内置函数

    使用思路:根据功能找函数,如 要做个文件管理器的话,首先确定使用和目录/文件相关的函数,画出来html页面看都有什么功能,再一次分析这些功能的实现 常量 手册中的位置:附录->保留字列表-> ...

  7. PHP:150个内置函数简单整合

    共计整理150个函数 一.数学函数 11个 函数 说明 举例 结果 abs 绝对值 abs(45), abs(-45) 45, 45 ceil 向上取整 ceil(5.5) 6 floor 向下取整 ...

  8. 为什么说 Python 内置函数并不是万能的?

    我们对比了两种创建列表的方法,即字面量用法 与内置类型用法 list,进而分析出它们在运行速度上的差异. 在分析为什么 list 会更慢的时候,文中说到它需要经过名称查找与函数调用两个步骤,那么,这就 ...

  9. python怎么用函数查看变量类型_查看变量类型的Python内置函数是()。

    [单选题]下列不属于反射的是( ) [判断题]传统通俗史学有普及型和通俗型 [单选题]当前最流行和最受重视的资料分析是( ). [简答题]什么情况下采用斜视图比较合适? [单选题]下列命题正确的是( ...

最新文章

  1. 如何查看linux版本
  2. c#调用java开发的webservice_用C#.NET调用Java开发的WebService传递int,double问题
  3. 脚本事件中心与事件订阅器
  4. c++面试题之标准模板库
  5. 教你搞定补码不恢复余数除法中够减和商的关系
  6. Git之常见的标签操作
  7. 2020牛客国庆集训派对day3 Leftbest
  8. python函数星号参数
  9. 特斯拉上市十年回报率高达12倍,马斯克做对了什么?
  10. 《Javascript高级程序设计》读书笔记(1-3章)
  11. 工程流体力学笔记暂记35 (平板层流边界层和平板混合边界层)
  12. raw socket
  13. 理想费米气体的量子统计推导
  14. 机器人语音---走进优必选
  15. R语言--异常值检测
  16. 【南阳OJ分类之语言入门】80题题目+AC代码汇总
  17. PostMan中文插件支持8.12.2
  18. macos安装盘第三方工具制作_如何制作macOS High Sierra USB启动安装盘
  19. stack-es-标准篇-ElasticsearchClient-combined_fields
  20. jsp 页面进行debug 断点找错误

热门文章

  1. vue 上传文件和下载文件
  2. noip day2 聪明的质检员
  3. 一个wordcount程序轻松玩转MapReduce编程模型
  4. MATLAB数学建模之排列图和柱状图
  5. python线性回归 多因子模型选股思路
  6. Selenium 自动化测试(二)部署Selenium Remote Control(Selenium RC)
  7. Jetson TX2 远程控制(Remote Control)
  8. Sigrity仿真之POWER DC操作步骤
  9. 关于迅雷提速的最终方案
  10. 什么是自己的商业模式?