在大型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而不是整条线。
答案 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的框架。