正则表达式在两者之间获取内容

时间:2012-01-06 13:36:08

标签: php regex

在大型HTML文档中,我有多行看起来像这样。值'TEST'可以是不同的。我想选择TEST或其他任何东西。

<TD width=300 valign=top><FONT COLOR=800000 size=3>TEST</FONT><BR>

我有这个正则表达式:

$regex = "/<FONT COLOR=800000 size=3>[\w.&,\s]*<\/FONT>/";

它拾取了我上面发布的所有线条。我怎样才能选择TEST而不是整条线。

3 个答案:

答案 0 :(得分:2)

$regex = "/<FONT COLOR=800000 size=3>([\w.&,\s]*)<\/FONT>/";
preg_match($regex, $string, $matches);

您将拥有$matches数组中的所有匹配项,$matches[1]应该是您的“测试”。

答案 1 :(得分:1)

首先,obligatory link

如果你真的想要正则表达式,请将括号括在[\w.&, ]*]附近并将内容捕获到一个组中,然后读取该组而不是整个匹配。 编辑我看到@boobiq向您展示了如何做到这一点,所以我不会。 :P

答案 2 :(得分:1)

您可能希望使用groups,从而将正则表达式更改为:

"/<FONT COLOR=800000 size=3>([\w.&, ]*)<\/FONT>/"

圆括号表示组。

理想情况下,您永远不应该使用正则表达式解析HTML(why not?)...您应该使用类似PHP Simple HTML DOM Parser的框架。