Update string.utils.php

This commit is contained in:
Namhyeon Go 2020-01-25 02:42:47 +09:00 committed by GitHub
parent c11f8d32ec
commit 9508d3f2b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,9 +7,10 @@
*/
if(!check_function_exists("get_converted_string")) {
function get_converted_string($str, $to_charset, $from_charset) {
function get_converted_string($str, $to_charset="detect", $from_charset="detect") {
$result = false;
// detect charset (input)
if($form_charset == "detect") {
if(check_function_exists(array("mb_detect_encoding", "mb_detect_order"))) {
$from_charset = mb_detect_encoding($str, mb_detect_order(), true);
@ -17,8 +18,31 @@ if(!check_function_exists("get_converted_string")) {
$from_charset = "ISO-8859-1";
}
}
// detect charset (output)
if($to_charset == "detect") {
if(check_function_exists("mb_internal_encoding")) {
$from_charset = mb_internal_encoding();
} elseif(check_function_exists("iconv_get_encoding")) {
$from_charset = iconv_get_encoding("internal_encoding");
} else {
$_candidates = array(
ini_get("default_charset"),
ini_get("iconv.internal_encoding"),
ini_get("mbstring.internal_encoding"),
"UTF-8"
);
}
}
// normalize charset (UPPERCASE)
$from_charset = strtoupper($from_charset);
$to_charset = strtoupper($from_charset);
if(check_function_exists("iconv")) {
// test conditions
if($from_charset == $to_charset) {
$result = $str;
} elseif(check_function_exists("iconv")) {
$result = iconv($from_charset, $to_charset, $str);
} elseif(check_function_exists("mb_convert_encoding")) {
$result = mb_convert_encoding($str, $to_charset, $from_charset);