2012-02-09 105 views
0

我试图从HTML提取表,这里是表开始的HTML代码。使用的preg_match提取表

<table class='price' id='comp' style='clear:both;display:none'> 

但是,当我使用这个PHP代码,没有找到匹配

preg_match("/<table class='price' id='comp' style='clear:both;display:none'>.*?<\/[\s]*table>/s", $buffer, $matches); 
print_r($matches); 

由于表是在HTML,我想这个问题是用的preg_match声明。

+3

不要用HTML混合正则表达式。改用一些XML解析器。 – hsz 2012-02-09 15:18:09

+0

@hsz为什么不呢?当他只需要整个网站的一个价值?解析(也许)无效的HTML可能会使用更多的资源 – Vyktor 2012-02-09 15:33:31

+0

尝试加入'im'修饰你的正则表达式的结束(因此最终会是什么样子:'表>/IM“',让我知道它的工作 – Vyktor 2012-02-09 15:34:29

回答

-1

猜你需要这样的:

<table class='price' id='comp' style='clear\:both;display\:none'>[\s\S]*?</table>

+1

AFAIK':'不需要在PCRE逃逸 – Vyktor 2012-02-09 15:31:13

+0

不,不工作。很奇怪吗? – user1197941 2012-02-09 17:14:08

+0

这是行不通的。 – Crontab 2012-02-09 18:56:52

0

使用PHP Simple HTML DOM Parser代替。不要推出自己的正则表达式来从网页中提取数据。如果你在使用自己的正则表达式来做到这一点绝对死心塌地,尝试My Regex Tester(不是我的 - 这恰好是它的名字)方便地调试模式。另外,请参考this Stack Overflow post,说明你为什么不应该做你想做的事情。

+0

因为我使用一个共享的主机,我不能使用DOM解析器。我对这个表达式应该是简单的反正。 – user1197941 2012-02-09 17:32:18

+0

@ user1197941为什么会共同主办阻止你使用我连接的类?它是一个PHP文件,它的唯一要求是具有PHP 5。 – Crontab 2012-02-09 18:24:18