preg_match php解析html

时间:2014-08-16 14:20:22

标签: php preg-match

使用php preg_match()函数解析html文件时遇到问题。

以下是html文件的示例行:

<DIV STYLE="top:214px; left:506px; width:88px" Class="S7">15:03</DIV>

div样式显示了我想要读出的表格。它就像一个坐标系。要获取内容,我需要div标签内的内容。但要知道div所属的内容,我需要top,left和width值。 div类并不总是S7。内容(此处15:03)可以是1234(4位)次(00:00)字母(AAA)。

我是正则表达式的新手,所以对我们熟悉的人来说,我的尝试可能看起来非常愚蠢。

这是我尝试过的。但没有得到任何结果:

    $reg_ex = "/\<DIV STYLE\=\"top:([0-9])px; left:([0-9])px; width:([0-9])px\" Class\=\"S7\"\>(.*?)\<\/DIV\>/";
    $ret = preg_match($reg_ex,fgets($file),$outp);

如果有人可以帮助我会很棒。

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

尝试

$reg_ex = "/<DIV STYLE=\"top:([0-9]+)px; left:([0-9]+)px; width:([0-9]+)px\" Class=\"S7\"\>(.*?)<\/DIV>/";
$ret = preg_match($reg_ex,fgets($file),$outp);

[0-9]表示0-9中的一个char。但是,您希望将一个或多个字符与[0-9]匹配,因此,您必须使用[0-9]+

此外,您只需要屏蔽特殊的正则表达式(即&#34; /&#34;)而不是&#34;&lt;&#34;,&#34; =&#34;,和&#34;&gt;&#34;通过前缀反斜杠。需要屏蔽"因为你需要在双引号内加双引号。

在我的示例中,该类仍然硬编码为S7。如果您还需要解析它,请使用(.+)代替(匹配任何字符并将其放入组中)。