php正则表达式的字典字符串

时间:2012-11-06 22:07:31

标签: php regex

我可以使用一些帮助为这个字典字符串写一个正则表达式(我不经常使用它们。)

这是字典字典的一个例子:

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。

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

3 个答案:

答案 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