배열을 serialize 한 다음에 iconv 같은걸로 인코딩을 변경한 다음 다시 unserialize 하면 안된다.
serialize 하면 배열의 요소중 문자열은 길이를 포함하여 저장되는데,
인코딩이 바뀔 경우 문자열의 길이가 달라질 수 있기 때문이다.
그럴 경우를 대비하여 필요한 것이 아래의 함수.
http://php.net/unserialize 페이지의 댓글에서 찾아냄.
function mb_unserialize($serial_str)
{
$out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str);
return unserialize($out);
}
{
$out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str);
return unserialize($out);
}
'PHP' 카테고리의 다른 글
[PHP] empty() 사용시 에러 can't use method return value in write context ... (0) | 2011.12.05 |
---|---|
[PHP] xdebug 설치했는데 var_dump가 예쁘게 안나올 때 (0) | 2011.12.02 |
[PHP] xampp 설치시 php_pdo_pgsql.dll, php_pgsql.dll 을 로딩하지 못할 때 (0) | 2011.08.23 |
[PHP] xml 데이터를 배열로 변환 (xml to json to array) (0) | 2011.07.11 |
[PHP] in_array 사용시 integer 0 주의 (0) | 2011.04.26 |