serialize()를 사용하여 데이터를 직렬화한 다음 데이터베이스에 삽입한 다음 unserialize()를 사용하여 역직렬화하고 일부 데이터 문자열 오류가 발생합니다.
오류 내용은 다음과 같습니다.unserialize() [ function.unserialize ]: 2544바이트의 오프셋 0에 오류가 있습니다.
구글에서 여러 해결 방법을 검색해 보니 모두 인코딩 문제로 인해 문제가 발생했다고 합니다.
그래서 삽입한 곳이 base64_encode(serialize($str));로 변경되었습니다.
제가 있는 곳은 읽어보니
unserialize(preg_replace('!s:(d+):"(.*?)";!se', '"s:".strlen("$2").":로 변경되었습니다. "$2";"', $string))
해보았지만 완전히 해결되지 않았습니다. 나중에 일부 데이터그램에서 동일한 오류가 발생했습니다. 백그라운드 데이터를 보면 삽입된 내용이 아래의 잘못된 코드와 유사한 것으로 바뀌었습니다.
< /p>
이유를 알 수 있도록 도와주세요. 가급적이면 더 자세히 설명해주세요.
PHP中文网2017-05-16 13:10:00
직렬화된 데이터에 문제가 있는지 확인하세요. 이전에는 serialize를 사용했는데 항상 문제가 있어서 json_decode
로 변경할 수밖에 없었습니다.