我可以使用一些帮助为这个字典字符串写一个正则表达式(我不经常使用它们。)
这是字典字典的一个例子:
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:"";}
我想从字典词典中提取Johnson。
任何帮助都将不胜感激,谢谢。
答案 0 :(得分:3)
这是一个PHP serialized对象。不要使用正则表达式。 unserialize()
数据并相应地显示answer
属性。
unserialize($data);
echo $data->answer;
答案 1 :(得分: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>
标记。
答案 2 :(得分: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