테스트 사이트 - 개발 중인 베타 버전입니다

php8인데 소스 함수 어떻게 변경하죠.. 채택완료

김준수사랑 5개월 전 조회 1,025

예전에 그누에서 얻은 소스를 사용하고 있는데 이부분이 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 포인트
플라이
5개월 전

이렇게 변경 적용해 보세요

 

</p>

<p>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));

}</p>

<p>

로그인 후 평가할 수 있습니다

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

5개월 전

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

 

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

        )

    );

}

로그인 후 평가할 수 있습니다

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

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

로그인