From f45231a8edddc7573716a26b1a40480502f00f1b Mon Sep 17 00:00:00 2001 From: Moriyoshi Koizumi Date: Mon, 21 Oct 2002 01:44:59 +0000 Subject: [PATCH] Added mb_strtolower() and mb_strtoupper() @- Added mb_strtolower() and mb_strtoupper(). (Moriyoshi) --- ext/mbstring/mbstring.c | 53 +++++++++++++++++++++++++++++++++++++ ext/mbstring/mbstring.h | 2 ++ ext/mbstring/tests/026.inc | 4 +++ ext/mbstring/tests/026.phpt | 12 +++++++++ 4 files changed, 71 insertions(+) create mode 100644 ext/mbstring/tests/026.inc create mode 100644 ext/mbstring/tests/026.phpt diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 7a8a526e21..3eff07463b 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -162,6 +162,8 @@ static const struct mb_overload_def mb_ovld[] = { {MB_OVERLOAD_STRING, "strpos", "mb_strpos", "mb_orig_strrpos"}, {MB_OVERLOAD_STRING, "strrpos", "mb_strrpos", "mb_orig_strrpos"}, {MB_OVERLOAD_STRING, "substr", "mb_substr", "mb_orig_substr"}, + {MB_OVERLOAD_STRING, "strtolower", "mb_strtolower", "mb_orig_strtolower"}, + {MB_OVERLOAD_STRING, "strtoupper", "mb_strtoupper", "mb_orig_strtoupper"}, #if HAVE_MBREGEX {MB_OVERLOAD_REGEX, "ereg", "mb_ereg", "mb_orig_ereg"}, {MB_OVERLOAD_REGEX, "eregi", "mb_eregi", "mb_orig_eregi"}, @@ -189,6 +191,8 @@ const struct def_mbctype_tbl mbctype_tbl[] = { function_entry mbstring_functions[] = { PHP_FE(mb_convert_case, NULL) + PHP_FE(mb_strtoupper, NULL) + PHP_FE(mb_strtolower, NULL) PHP_FE(mb_language, NULL) PHP_FE(mb_internal_encoding, NULL) PHP_FE(mb_http_input, NULL) @@ -2580,6 +2584,55 @@ PHP_FUNCTION(mb_convert_case) } /* }}} */ +/* {{{ proto string mb_strtoupper(string sourcestring, [, string encoding]) + * Returns a uppercased version of sourcestring + */ +PHP_FUNCTION(mb_strtoupper) +{ + char *str, *from_encoding = (char*)mbfl_no2preferred_mime_name(MBSTRG(current_internal_encoding)); + long str_len, from_encoding_len; + long case_mode = 0; + char *newstr; + size_t ret_len; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!", &str, &str_len, + &from_encoding, &from_encoding_len) == FAILURE) { + RETURN_FALSE; + } + newstr = php_unicode_convert_case(PHP_UNICODE_CASE_UPPER, str, str_len, &ret_len, from_encoding TSRMLS_CC); + + if (newstr) + RETURN_STRINGL(newstr, ret_len, 0); + + RETURN_FALSE; +} +/* }}} */ + +/* {{{ proto string mb_strtolower(string sourcestring, [, string encoding]) + * Returns a lowercased version of sourcestring + */ +PHP_FUNCTION(mb_strtolower) +{ + char *str, *from_encoding = (char*)mbfl_no2preferred_mime_name(MBSTRG(current_internal_encoding)); + long str_len, from_encoding_len; + long case_mode = 0; + char *newstr; + size_t ret_len; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!", &str, &str_len, + &from_encoding, &from_encoding_len) == FAILURE) { + RETURN_FALSE; + } + newstr = php_unicode_convert_case(PHP_UNICODE_CASE_LOWER, str, str_len, &ret_len, from_encoding TSRMLS_CC); + + if (newstr) + RETURN_STRINGL(newstr, ret_len, 0); + + RETURN_FALSE; +} +/* }}} */ + + /* {{{ proto string mb_detect_encoding(string str [, mixed encoding_list]) Encodings of the given string is returned (as a string) */ PHP_FUNCTION(mb_detect_encoding) diff --git a/ext/mbstring/mbstring.h b/ext/mbstring/mbstring.h index 81646dc281..d553ff2ee2 100644 --- a/ext/mbstring/mbstring.h +++ b/ext/mbstring/mbstring.h @@ -78,6 +78,8 @@ PHP_MINFO_FUNCTION(mbstring); /* functions in php_unicode.c */ PHP_FUNCTION(mb_convert_case); +PHP_FUNCTION(mb_strtoupper); +PHP_FUNCTION(mb_strtolower); /* php function registration */ PHP_FUNCTION(mb_language); diff --git a/ext/mbstring/tests/026.inc b/ext/mbstring/tests/026.inc new file mode 100644 index 0000000000..5649b5f96e --- /dev/null +++ b/ext/mbstring/tests/026.inc @@ -0,0 +1,4 @@ + diff --git a/ext/mbstring/tests/026.phpt b/ext/mbstring/tests/026.phpt new file mode 100644 index 0000000000..3ee5e3a564 --- /dev/null +++ b/ext/mbstring/tests/026.phpt @@ -0,0 +1,12 @@ +--TEST-- +mb_strtoupper() / mb_strtolower() +--SKIPIF-- + +function_exists('mb_strtolower') or die("SKIP"); +--POST-- +--GET-- +--FILE-- + +--EXPECT-- +abcdefghijklmnopqrstuvwxyz +ABCDEFGHIJKLMNOPQRSTUVWXYZ -- 2.50.1