diff options
author | Tjerk Meesters <datibbaw@php.net> | 2014-07-12 11:15:03 +0800 |
---|---|---|
committer | Tjerk Meesters <datibbaw@php.net> | 2014-07-12 11:15:03 +0800 |
commit | 7de82eaeef24f3020610438877e375c9d35ac99c (patch) | |
tree | 789627426858b137859bd2c649cd7d77b219c534 /ext/standard/string.c | |
parent | e05fb6ee0185fb3f6b8b1f60c6d18cb3cd185275 (diff) | |
parent | c3f5e2a1f9d309fdb684ea0e4ac40d881435fde9 (diff) | |
download | php-git-7de82eaeef24f3020610438877e375c9d35ac99c.tar.gz |
Merge branch 'PHP-5.6'
Diffstat (limited to 'ext/standard/string.c')
-rw-r--r-- | ext/standard/string.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c index 9aa7c637f9..ab8280346f 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -2738,11 +2738,12 @@ PHP_FUNCTION(lcfirst) Uppercase the first character of every word in a string */ PHP_FUNCTION(ucwords) { - char *str; + char *str, *delims = " \t\r\n\f\v"; register char *r, *r_end; - int str_len; + int str_len, delims_len = 6; + char mask[256]; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &str, &str_len, &delims, &delims_len) == FAILURE) { return; } @@ -2750,12 +2751,14 @@ PHP_FUNCTION(ucwords) RETURN_EMPTY_STRING(); } + php_charmask((unsigned char *)delims, delims_len, mask TSRMLS_CC); + ZVAL_STRINGL(return_value, str, str_len, 1); r = Z_STRVAL_P(return_value); *r = toupper((unsigned char) *r); for (r_end = r + Z_STRLEN_P(return_value) - 1; r < r_end; ) { - if (isspace((int) *(unsigned char *)r++)) { + if (mask[(unsigned char)*r++]) { *r = toupper((unsigned char) *r); } } |