php内置函数分析之ucfirst()、lcfirst()
ucfirst($str)
将 str
的首字符(如果首字符是字母)转换为大写字母,并返回这个字符串。
源码位于 ext/standard/string.c
1 /* {{{ php_ucfirst 2 Uppercase the first character of the word in a native string */ 3 static void php_ucfirst(char *str) 4 { 5 register char *r; 6 r = str; 7 *r = toupper((unsigned char) *r); 8 } 9 /* }}} */ 10 11 /* {{{ proto string ucfirst(string str) 12 Makes a string's first character uppercase */ 13 PHP_FUNCTION(ucfirst) 14 { 15 zend_string *str; 16 17 ZEND_PARSE_PARAMETERS_START(1, 1) 18 Z_PARAM_STR(str) 19 ZEND_PARSE_PARAMETERS_END(); 20 21 if (!ZSTR_LEN(str)) { 22 RETURN_EMPTY_STRING(); 23 } 24 25 ZVAL_STRINGL(return_value, ZSTR_VAL(str), ZSTR_LEN(str)); 26 php_ucfirst(Z_STRVAL_P(return_value)); 27 } 28 /* }}} */
*r = toupper((unsigned char) *r); 这句调用c函数toupper()将字符数组的第一个元素转为大写。
函数lcfirst()的实现与ucfirst()类似。