0

NewPointsShopというmodであるMyBBを使用しています。

これはシリアル化されたフィールドです。

$barnInfo['newpoints_items'] = "a:7:{i:0;s:1:"2";i:1;s:1:"2";i:2;s:1:"2";i:3;s:1:"2";i:4;s:1:"5";i:5;s:1:"7";i:6;s:1:"7";}" 

// the deserialized field represents this data:
4 Lumber (Item ID 2)
1 Mushroom (Item ID 5)
2 Carrot (Item ID 7)
(And perhaps 0 of every other item - there are 9 items: Item ID 1, 2, 3, ...7, 8, 9)

彼らのコードでは、彼らは

$items = unserialize($barnInfo['newpoints_items']);

このデータを操作するのに本当に苦労しています。デシリアライズされたデータを画面に印刷できるかどうか、それをどのように操作するかがわかります。しかし、意味のあるものを印刷する方法がわかりません。print_rで遊んだのですが、うまくいきませんでした。

// displays '1' , quite unhelpful!
print_r(unserialize($barnInfo['newpoints_items'] ))
// I tried and got very confusing results that don't seem to correspond at all http://blog.tanist.co.uk/files/unserialize/index.php

質問:逆シリアル化されたデータを画面に印刷して、何が何であるかを理解するにはどうすればよいですか?

*回答:* MyBBは画面に物を印刷するのに少し注意が必要ですが、これは機能します。"<pre>" . htmlspecialchars(print_r($items, true)) . "</pre> ... "

4

1 に答える 1

1

実際にシリアル化されたデータが含まれていると仮定すると、タグで$barnInfo['newpoint_items']ラップすると読みやすくなります。print_rpre

echo '<pre>';
print_r(unserialize($barnInfo['newpoint_items']));
echo '</pre>';
于 2013-01-01T01:43:09.827 に答える