分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

php内置函数分析之strtoupper()、strtolower()

发布时间:2023-09-06 01:56责任编辑:苏小强关键词:暂无标签

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不是字符串首地址时,执行此if14 ????????????????memcpy(ZSTR_VAL(res), ZSTR_VAL(s), c - (unsigned char*)ZSTR_VAL(s)); //将c位置之前的字符数据复制给res15 ????????????}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()

原文地址:https://www.cnblogs.com/natian-ws/p/9091199.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved