diff options
| author | Rui Hirokawa <hirokawa@php.net> | 2001-01-08 02:39:52 +0000 |
|---|---|---|
| committer | Rui Hirokawa <hirokawa@php.net> | 2001-01-08 02:39:52 +0000 |
| commit | 63689331183be0995650432ee4cdc7196e305b67 (patch) | |
| tree | 20349ab714d29a4966609825ef8c25c70b465f76 /ext/standard | |
| parent | 75eea8ed1bee0adc0b9f14965cde8f778c5bb89f (diff) | |
| download | php-git-63689331183be0995650432ee4cdc7196e305b67.tar.gz | |
added iconv_set_encoding() to change the encoding setting.
Diffstat (limited to 'ext/standard')
| -rw-r--r-- | ext/standard/basic_functions.c | 1 | ||||
| -rw-r--r-- | ext/standard/php_string.h | 1 | ||||
| -rw-r--r-- | ext/standard/string.c | 28 |
3 files changed, 29 insertions, 1 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index da694a48d4..a59ed605f7 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -197,6 +197,7 @@ function_entry basic_functions[] = { #ifdef HAVE_ICONV PHP_FE(iconv, NULL) PHP_FE(ob_iconv_handler, NULL) + PHP_FE(iconv_set_encoding, NULL) #endif PHP_FE(parse_url, NULL) PHP_FE(urlencode, NULL) diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h index da8a568954..ce6fce4a82 100644 --- a/ext/standard/php_string.h +++ b/ext/standard/php_string.h @@ -80,6 +80,7 @@ PHP_FUNCTION(str_pad); PHP_FUNCTION(sscanf); PHP_FUNCTION(iconv); PHP_FUNCTION(ob_iconv_handler); +PHP_FUNCTION(iconv_set_encoding); #define strnatcmp(a, b) \ strnatcmp_ex(a, strlen(a), b, strlen(b), 0) diff --git a/ext/standard/string.c b/ext/standard/string.c index 34dc4cf6e4..b422cf94c3 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -3050,7 +3050,6 @@ PHP_FUNCTION(iconv) zval **in_charset, **out_charset, **in_buffer; unsigned int in_size, out_size; char *out_buffer, *in_p, *out_p; - iconv_t cd; size_t result; typedef unsigned int ucs4_t; @@ -3096,6 +3095,33 @@ PHP_FUNCTION(ob_iconv_handler) } +/* {{{ proto bool iconv_set_encoding(string int_charset, string out_charset) + set internal encoding and output encoding for ob_iconv_handler(). +*/ +PHP_FUNCTION(iconv_set_encoding) +{ + zval **int_charset, **out_charset; + + if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &int_charset, &out_charset) == FAILURE) { + WRONG_PARAM_COUNT; + } + + convert_to_string_ex(int_charset); + convert_to_string_ex(out_charset); + + if (BG(iconv_internal_encoding)) { + free(BG(iconv_internal_encoding)); + } + BG(iconv_internal_encoding) = estrndup(Z_STRVAL_PP(int_charset),Z_STRLEN_PP(int_charset)); + + if (BG(iconv_output_encoding)) { + free(BG(iconv_output_encoding)); + } + BG(iconv_output_encoding) = estrndup(Z_STRVAL_PP(out_charset),Z_STRLEN_PP(out_charset)); + + RETURN_TRUE; +} + #endif /* |
