html标签之间的preg_match

时间:2013-02-06 15:39:03

标签: php preg-match

我需要获取html标签之间的名称。

<div class="from"><span class="profile fn">firstnamed familyname</span></div>

到目前为止,我根据其他人的例子尝试了同样的问题:

preg_match(";from"><span class="profile fn>(.?)</span></div>;", $text, $match)

但它不起作用。

正确的方法是什么?

非常感谢。

3 个答案:

答案 0 :(得分:1)

preg_match(";from"><span class="profile fn>(.?)</span></div>;", $text, $match)

......应该触发这个:

  

解析错误:语法错误,意外'&lt;'

除此之外:

  • 您寻找一个不在原始文本中的未闭合属性:

    class="profile fn vs class="profile fn"

  • 您寻找零个或一个字符:

    .?

修正了正则表达式:

$text = '<div class="from"><span class="profile fn">firstnamed familyname</span></div>';
preg_match(';from"><span class="profile fn">(.*)</span></div>;', $text, $match);
var_dump($match);

当然,这可能会破坏大型HTML文档(稍后会有另一个</span></div>位)。当用于解析HTML时,正则表达式是不可能的。

答案 1 :(得分:0)

这:

preg_match(";from"><span class="profile fn>(.?)</span></div>;", $text, $match)

在语法上是不正确的,你必须转义双引号:

preg_match(";from\"><span class=\"profile fn>(.?)</span></div>;", $text, $match)

答案 2 :(得分:0)

您需要转义特殊字符(例如引号):