この辞書文字列の正規表現を書くのに役立つかもしれません(私はそれらをそれほど頻繁には使用しません)。
これは文字列辞書の例です。
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:"";}
文字列辞書からジョンソンを抽出したい。
助けていただければ幸いです、ありがとう。
これはPHPのシリアル化されたオブジェクトです。正規表現は使用しないでください。unserialize()
データとanswer
それに応じてプロパティを表示します。
unserialize($data);
echo $data->answer;
$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>
。
代わりに使用する必要があるようです。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