0

可能重复:
正则表达式 - 贪婪 - 匹配 HTML 标签、内容和属性

我要解析的文本是这样的:

Dir: <a href="/name/nm0381817/">Vinton Heuck</a>, <a href="/name/nm1367649/">Ciro Nieli</a>
    With: <a href="/name/nm0519680/">Eric Loomis</a>, <a href="/name/nm0732436/">Bumper Robinson</a>, <a href="/name/nm1685408/">Dawn Olivieri</a>

通常,“Dir”后面有一个或两个锚元素,“With”后面有多个锚元素。

我想要做的是在“Dir”之后和“With”之前获取所有锚元素的值。我尝试了一些这样的正则表达式:

preg_match_all("/Dir: <a href=\"\/name\/.+\/\">(.+)<\/a>/", $content, $matches);

但这仅在“Dir”之后只有一个锚元素时才有效。有什么建议么?谢谢!

4

3 回答 3

0

假设包含“Dir:”的行只出现一次:

preg_match_all("/(<([[:graph:]]+)[^>]*>)(.*?)(<\/\\2>)/", preg_replace("/[[:blank:]]*With:.*/","",$content), $matches);

print_r($matches[3]);
于 2012-10-23T04:33:39.660 回答
0

我认为您缺少一些分组指令“()+”来获得的不仅是一个,而是一个或两个链接,看看这个来测试你的正则表达式。

于 2012-10-23T00:22:09.370 回答
0

您必须对正则表达式进行分组以查找锚标记,并使用 + 表示一个或多个。

就像是:

/Dir: (<a href=\"\/name\/.+\/\">(.+)<\/a>)+/

您必须进行编辑以考虑逗号,但这会让您入门。

于 2012-10-23T00:24:44.563 回答