ホームページ  >  記事  >  バックエンド開発  >  逆シリアル化で印刷できないのは不思議です。どうすれば解決できますか?

逆シリアル化で印刷できないのは不思議です。どうすれば解決できますか?

WBOY
WBOYオリジナル
2016-06-13 13:28:10902ブラウズ

逆シリアル化が印刷できないのは奇妙です
$safe_faqs = 'a:4:{i:1;a:2:{s:8:"question";s:37:"あなたの一番好きなネットワーク構築プログラムは何ですか?";s:6:"答え";s:7:"DedeCMS";}i:2;a:2:{s:8:"質問";s:6: "1 +11=?";s:6:"答え";s:2:"12";}i:3;a:2:{s:8:"質問";s:59:"どのスポーツですか中国 聞くのが最も悲しく、見るのが胸が締め付けられるのは何ですか?";s:6:"答え";s:6:"サッカー";}i:4;a:2:{s:8:"質問" ;s:29 :"";s:6:"answer";s:24:"DreamWeaver コンテンツ管理システム";}}';

$safefaqs = unserialize($safe_faqs);

print_r($safefaqs);
?>
ページが空白です、なぜですか、アドバイスをください

- -----解決策----------------------
ファイルのエンコードを UTF-8 に変更します。
------解決策---------
ちなみに、ファイルはUTF8エンコードされているので、このように %XX%XX%XX に変換する必要があります。
------解決策----------------------
LZ はストリップスラッシュを使用します (シリアル番号を逆シリアル化する前に) 試してくださいこの
PHP がこのシンボルを自動的に追加するかどうかはわかりません。
------解決策------------------
この種の問題を解決する鍵は次のとおりです。シーケンス

たとえば、s:6: "football";
s は、二重引用符で囲まれた 6 バイトの長さを表します。コンテンツは次のとおりです。
長さの表示により、コンテンツ内に出現する可能性のある二重引用符は曖昧さを引き起こしません

この例では、コンテンツはサッカー、つまり 2 つの漢字であることがわかります。長さは 6 です。これは、これが UTF-8 エンコード環境でシリアル化されていることを意味します。

プログラムを utf-8 エンコーディングとして保存するか、$safe_faqs = iconv('gbk', 'utf-8', $safe_faqs);
コードを変換すると、正常に出力されます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。