davidc Sat Jan 19 19:23:25 2008 UTC
Added files:
/php-src/ext/standard/tests/strings lcfirst.phpt
Modified files:
/php-src/ext/standard basic_functions.c php_string.h string.c
Log:
- Added lcfirst() function. The sister function of ucfirst()
- Test #1 for lcfirst()
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.886r2=1.887diff_format=u
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.886
php-src/ext/standard/basic_functions.c:1.887
--- php-src/ext/standard/basic_functions.c:1.886Mon Dec 31 07:12:15 2007
+++ php-src/ext/standard/basic_functions.c Sat Jan 19 19:23:25 2008
@@ -17,7 +17,7 @@
+--+
*/
-/* $Id: basic_functions.c,v 1.886 2007/12/31 07:12:15 sebastian Exp $ */
+/* $Id: basic_functions.c,v 1.887 2008/01/19 19:23:25 davidc Exp $ */
#include php.h
#include php_streams.h
@@ -2635,6 +2635,11 @@
ZEND_END_ARG_INFO()
static
+ZEND_BEGIN_ARG_INFO(arginfo_lcfirst, 0)
+ ZEND_ARG_INFO(0, str)
+ZEND_END_ARG_INFO()
+
+static
ZEND_BEGIN_ARG_INFO(arginfo_ucwords, 0)
ZEND_ARG_INFO(0, str)
ZEND_END_ARG_INFO()
@@ -3189,6 +3194,7 @@
PHP_FE(substr_replace,
arginfo_substr_replace)
PHP_FE(quotemeta,
arginfo_quotemeta)
PHP_FE(ucfirst,
arginfo_ucfirst)
+ PHP_FE(lcfirst,
arginfo_lcfirst)
PHP_FE(ucwords,
arginfo_ucwords)
PHP_FE(strtr,
arginfo_strtr)
PHP_FE(addslashes,
arginfo_addslashes)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/php_string.h?r1=1.109r2=1.110diff_format=u
Index: php-src/ext/standard/php_string.h
diff -u php-src/ext/standard/php_string.h:1.109
php-src/ext/standard/php_string.h:1.110
--- php-src/ext/standard/php_string.h:1.109 Mon Dec 31 07:12:16 2007
+++ php-src/ext/standard/php_string.h Sat Jan 19 19:23:25 2008
@@ -17,7 +17,7 @@
+--+
*/
-/* $Id: php_string.h,v 1.109 2007/12/31 07:12:16 sebastian Exp $ */
+/* $Id: php_string.h,v 1.110 2008/01/19 19:23:25 davidc Exp $ */
/* Synced with php 3.0 revision 1.43 1999-06-16 [ssb] */
@@ -54,6 +54,7 @@
PHP_FUNCTION(substr);
PHP_FUNCTION(quotemeta);
PHP_FUNCTION(ucfirst);
+PHP_FUNCTION(lcfirst);
PHP_FUNCTION(ucwords);
PHP_FUNCTION(strtr);
PHP_FUNCTION(strrev);
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/string.c?r1=1.662r2=1.663diff_format=u
Index: php-src/ext/standard/string.c
diff -u php-src/ext/standard/string.c:1.662 php-src/ext/standard/string.c:1.663
--- php-src/ext/standard/string.c:1.662 Wed Jan 16 08:34:06 2008
+++ php-src/ext/standard/string.c Sat Jan 19 19:23:25 2008
@@ -18,7 +18,7 @@
+--+
*/
-/* $Id: string.c,v 1.662 2008/01/16 08:34:06 tony2001 Exp $ */
+/* $Id: string.c,v 1.663 2008/01/19 19:23:25 davidc Exp $ */
/* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
@@ -3856,6 +3856,69 @@
}
/* }}} */
+/* {{{ php_u_lcfirst()
+ Makes an Unicode string's first character lowercase */
+static void php_u_lcfirst(UChar *ustr, int ustr_len, zval *return_value
TSRMLS_DC)
+{
+ UChar tmp[3] = { 0, 0, 0 }; /* UChar32 will be converted to upto 2
UChar units */
+ int tmp_len = 0;
+ int pos = 0;
+ UErrorCode status = U_ZERO_ERROR;
+
+ U16_FWD_1(ustr, pos, ustr_len);
+ tmp_len = u_strToUpper(tmp, sizeof(tmp)/sizeof(UChar), ustr, pos,
UG(default_locale), status);
+
+ Z_USTRVAL_P(return_value) = eumalloc(tmp_len + ustr_len - pos+1);
+
+ Z_USTRVAL_P(return_value)[0] = tmp[0];
+ if (tmp_len 1) {
+ Z_USTRVAL_P(return_value)[1] = tmp[1];
+ }
+ u_memcpy(Z_USTRVAL_P(return_value)+tmp_len, ustr + pos, ustr_len -
pos+1);
+ Z_USTRLEN_P(return_value) = tmp_len + ustr_len - pos;
+}
+/* }}} */
+
+/* {{{ php_lcfirst
+ Lowercase the first character of the word in a native string */
+static void php_lcfirst(char *str)
+{
+ register char *r;
+ r = str;
+ *r = tolower((unsigned char) *r);
+}
+/* }}} */
+