使用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);
如果有人可以帮助我会很棒。
提前多多感谢!
答案 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
。如果您还需要解析它,请使用(.+)
代替(匹配任何字符并将其放入组中)。