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:"";}

我想从字符串字典中提取 Johnson。

任何帮助将不胜感激,谢谢。

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>and</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 回答