당신이 일렬 화를 푸는하고 데이터가 잘못
a:57{s:10:"THEME_NAME";s:5:"green";s:16:"PUBLIC_ADS_LIMIT";s:1:"5";s:17:"PUBLIC_EDIT_LIMIT";s:1:"5";s:8:"SITENAME";s:10:"Abcdubai";s:5:";}
당신은 당신이 알림이 표시됩니다 E_ALL 오류보고로 문자열을 비 일렬 화하려고하면
$data = 'a:57{s:10:"THEME_NAME";s:5:"green";s:16:"PUBLIC_ADS_LIMIT";s:1:"5";s:17:"PUBLIC_EDIT_LIMIT";s:1:"5";s:8:"SITENAME";s:10:"Abcdubai";s:5:";}';
var_dump($data);
당신은
a:57
배열의 길이
Notice: unserialize(): Error
때문에 얻을 것이다 데이터에서 당신은 명확하게 57
아니다 있습니다. 문자열 s:10:"Abcdubai"
문자열 Abcdubai
의 길이
s:
점은 8 그래서 당신은 s:5
는 의미 같은 이유로 끝에 마지막으로 당신이 s:5:";
이 s:8:"Abcdubai"
에 그 변경해야합니다의 길이가 10 아닙니다 길이가 5 자와 문자열은 그것을 당신이이 방법의 t을 시도 할 수 있습니다
<?php
// this the valid data
$data = 'a:4:{s:10:"THEME_NAME";s:5:"green";s:16:"PUBLIC_ADS_LIMIT";s:1:"5";s:17:"PUBLIC_EDIT_LIMIT";s:1:"5";s:8:"SITENAME";s:8:"Abcdubai";}';
$data = unserialize($data);
// accessing the valid serialized data
echo $data['THEME_NAME'];
echo $data['PUBLIC_ADS_LIMIT'];
echo $data['PUBLIC_EDIT_LIMIT'];
echo $data['SITENAME'];
한 따옴표와 비어 57 : :`오 포맷이
function fixUnserializeFormatting($data){
// fix string length (will fix s:)
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $data);
// remove empty matches with one double qoute
$data = preg_replace('/s\:+[0-9]+\:";/i', '', $data);
// trying to get the right array length
$strings = substr_count($data,';')/2;
// fixing array length
$data = preg_replace('/^a:+[0-9]+:/i', "a:{$strings}:", $data);
// finally returning the formatted data
return $data;
}
사용
$data = 'a:57:{s:10:"THEME_NAME";s:5:"green";s:16:"PUBLIC_ADS_LIMIT";s:1:"5";s:17:"PUBLIC_EDIT_LIMIT";s:1:"5";s:8:"SITENAME";s:10:"Abcdubai";s:5:";}';
$data = fixUnserializeFormatting($data);
var_dump(unserialize($data));
는'후 줄 바꿈을 것 같다 문제 해결. 원래 코드에서도 그렇습니까? 또한 결과를 반향하는 경우 실패시 unserialize()가 false를 반환한다는 사실을 놓칠 수 있습니다. 예를 들어'var_dump() '를 사용하여 함수가 정확히 무엇을 반환하는지 확인하십시오. – Boaz
'unserialize() : 144 바이트 오프셋 132에서 오류가 발생했습니다. 잊지 말고 모든 오류를 표시하면 알 수 있습니다. – codinginsane
[unserialize() \ [function.unserialize \] 가능한 중복 : 오류시 오프셋] http://stackoverflow.com/questions/10152904/unserialize-function-unserialize-error-at-offset) – Neo