• php内置函数分析之ucwords()


     1 PHP_FUNCTION(ucwords)
     2 {
     3     zend_string *str;
     4     char *delims = " 	
    fv";
     5     register char *r, *r_end;
     6     size_t delims_len = 6;
     7     char mask[256];
     8 
     9     ZEND_PARSE_PARAMETERS_START(1, 2)
    10         Z_PARAM_STR(str)
    11         Z_PARAM_OPTIONAL
    12         Z_PARAM_STRING(delims, delims_len)
    13     ZEND_PARSE_PARAMETERS_END();
    14 
    15     if (!ZSTR_LEN(str)) {
    16         RETURN_EMPTY_STRING();
    17     }
    18 
    19     php_charmask((unsigned char *)delims, delims_len, mask); // 初始化mask数组,并对上述6个字符执行类似这样的操作:char c='	';mask[c]=1;
    20 
    21     ZVAL_STRINGL(return_value, ZSTR_VAL(str), ZSTR_LEN(str)); //初始化函数返回值return_value
    22     r = Z_STRVAL_P(return_value); //新字符串首地址
    23 
    24     *r = toupper((unsigned char) *r); //将新字符串首字符大写转换
    25     for (r_end = r + Z_STRLEN_P(return_value) - 1; r < r_end; ) {//一次遍历每个字符
    26         if (mask[(unsigned char)*r++]) { // 字符如果是上述6个之一,则该字符后面的字符进行大写转换
    27             *r = toupper((unsigned char) *r);
    28         }
    29     }
    30     //结束之后,将返回return_value
    31 }
  • 相关阅读:
    Fitness
    【代码优化】Unity查漏补缺
    Fitness
    MonoBehaviour生命周期与对象数据池应用
    Fitness
    点、向量、方向在局部与世界坐标系转换的对比
    在企业运营中的感触
    技术杂想2015年夏天
    Heimich manoeuvre 海姆利克氏操作
    徒手CPR心脏复苏
  • 原文地址:https://www.cnblogs.com/natian-ws/p/9091401.html
Copyright © 2020-2023  润新知