채택완료

php8인데 소스 함수 어떻게 변경하죠..

2025-05-22 (목) 15:30:42 1,475

예전에 그누에서 얻은 소스를 사용하고 있는데 이부분이 php8 에서는 안되는거드라구요

혼자서 해보는데 안되어서 여쭤봅니다;;

// 베짱이님 제공 함수
function utf8_urldecode($str, $chr_set='CP949') {
    $callback_function = create_function('$matches, $chr_set="'.$chr_set.'"', 'return iconv("UTF-16BE", $chr_set, pack("n*", hexdec($matches[1])));');
    return rawurldecode(preg_replace_callback('/%u([[:alnum:]]{4})/', $callback_function, $str));
 }

|

답변 2개

채택된 답변
+20 포인트

이렇게 변경 적용해 보세요

Copy
function utf8_urldecode($str, $chr_set = 'CP949') {
    $callback_function = function($matches) use ($chr_set) {
        return iconv("UTF-16BE", $chr_set, pack("n*", hexdec($matches[1])));
    };
    return rawurldecode(preg_replace_callback('/%u([[:alnum:]]{4})/', $callback_function, $str));
}
2025-05-22 (목) 15:41:47

create_function() 함수가 제거 되어서 발생한 문제입니다.

Copy
function utf8_urldecode($str, $chr_set = 'CP949') {
    return rawurldecode(
        preg_replace_callback(
            '/%u([[:alnum:]]{4})/',
            function (array $matches) use ($chr_set) {
                // 16비트 BE 인코딩 데이터를 원하는 문자셋으로 변환
                return iconv(
                    "UTF-16BE",
                    $chr_set,
                    pack("n*", hexdec($matches[1]))
                );
            },
            $str
        )
    );
}

답변을 작성하려면 로그인이 필요합니다.