私が得ている正確なエラーは次のとおりです。
ErrorException [通知]: unserialize(): オフセット 5/59 バイトでエラーが発生しました
MySQL の TEXT フィールドから返されるシリアル化されたデータは次のとおりです (エンコーディング: utf8、エンジン: InnoDB):
a:1:{s:12:"display_name";s:6:"Foo";}
シリアル化を解除した後の出力は次のとおりです。
array(1) { [0]=> bool(false) }
私はこのようなものを期待しています:
array(1) { ["display_name"]=> string(6) "Foo" }
Mac OS 10.8.4 で FuelPHP 1.6.1、PHP 5.4.10、MySQL 5.5.29、InnoDB 1.1.8 を使用しています。シリアル化されたエントリの一部は非シリアル化で機能しますが、他のエントリは機能しません。機能するエントリをコピーして、機能しないエントリに貼り付けると、同じエラーが表示されます。文字の問題だと思います。utf8、urlencode、およびストリップスラッシュにエンコードしようとしましたが、何も機能していないようです。
どんな助けでも大歓迎です!
アップデート
シリアル化された文字列には型がありました。プライバシーのために実際の表示名に貼り付けるときにこれを行いました。実際の文字列は次のとおりです。
a:1:{s:12:"display_name";s:3:"Foo";}
これを指摘してくれた@robwに感謝します。
更新と回答
私はhtml_entity_decode()
今、シリアル化されたデータを次のように実行しています:
$unserialized = unserialize(html_entity_decode($serialized, ENT_QUOTES));
助けとアドバイスをありがとう!