0

この辞書文字列の正規表現を書くのに役立つかもしれません(私はそれらをそれほど頻繁には使用しません)。

これは文字列辞書の例です。

O:8:"stdClass":5:{s:4:"sent";i:0;s:6:"graded";i:0;s:5:"score";i:0;s:6:"answer";s:14:"<p>Johnson</p>";s:8:"response";s:0:"";}

文字列辞書からジョンソンを抽出したい。

助けていただければ幸いです、ありがとう。

4

3 に答える 3

3

これはPHPのシリアル化されたオブジェクトです。正規表現は使用しないでください。unserialize()データとanswerそれに応じてプロパティを表示します。

unserialize($data);
echo $data->answer;
于 2012-11-06T22:11:50.497 に答える
0
$str = 'O:8:"stdClass":5:{s:4:"sent";i:0;s:6:"graded";i:0;s:5:"score";i:0;s:6:"answer";s:14:"<p>Johnson</p>";s:8:"response";s:0:"";}';

$obj = unserialize($str);

echo $obj->answer;

これは正解であり、正規表現は必要ありません。<p>タグを削除したい場合は、追加のHTML解析が必要になる場合があります。フォーマットが常に<p>同じままである場合(そしてその場合のみ!)、タグとタグを削除するだけです</p>

于 2012-11-06T22:13:56.760 に答える
0

代わりに使用する必要があるようです。unserialize()その後、preg_matchを使用して<p>タグを削除できます。

$obj = (unserialize('O:8:"stdClass":5:{s:4:"sent";i:0;s:6:"graded";i:0;s:5:"score";i:0;s:6:"answer";s:14:"<p>Johnson</p>";s:8:"response";s:0:"";}'));
preg_match('~<p>([^<]*)</p>~', $obj->answer, $ans);
print_r($ans[1]); //prints Johnson
于 2012-11-06T22:17:05.820 に答える