-
php
- //私のページはUTF-8でエンコードされており、結果は次のようになります: a:2:{s:2:"en";s:21:"http:// www.phpddt.com";s:2:"cn";s:6:"チュートリアル";}
- //私のページは ANSI エンコードされており、結果は次のようになります: a:2:{s:2:" en";s:21:"http://www.phpddt.com";s:2:"cn";s:4:"チュートリアル";}
- echo Serialize(配列) ('en'=>'http://www.phpddt.com','cn'=> 上記から、ページのエンコーディングが異なり、シリアル化された中国語の文字列の長さが異なるため、シリアル化を解除するときに文字列の長さが実際の文字列の長さよりも長い場合、次のエラーが報告されます:
。 注意: unserialize() [function.unserialize]: オフセットでのエラー
解決策は、デシリアライズされた文字列を一度変換する必要があることです:
function
_unserialize (
- $string){return
- unserialize(
- preg_replace( '!s:(d+):"(.*?) ";!se' ,'"s:".strlen("$2").":"$2";"', $string));}
-
転載元:
http://www.phpddt.com/php/unserialize-error-at-offset.html
以上、PHP unserialize の Error at offset エラーについて、serialize の内容も含めて紹介しましたので、PHP チュートリアルに興味のある方の参考になれば幸いです。