2012-07-22 52 views
0
  • 我想从网址获取第一篇文章内容到我的网站。这里是网址,我需要得到:

http://www.vietvbb.vn/up/forumdisplay.php?f=15从另一个网站获取数据时的简单正则表达式

  • 所以我用萤火虫做。我需要得到这个HTML代码之间的第一篇文章的内容:

    <td id="td_post_11229294" class="alt1" style="border-right: 0px solid #262626"><--content that i need--></td> 
    
  • ,我也这样说:

    $url = 'http://www.vietvbb.vn/up/showthread.php?t=65690'; 
    $data = file_get_contents($url); 
    preg_match('/<td class="alt1" id="td_post_(.*?)">\r\n(.*?)\r\n<\/td>/s', $data, $tc);echo '<pre>';print_r($tc);echo '</pre>'; 
    
  • 但正如你看到的,它不仅返回我真的需要在TD标签,它给我的td标签都先内容后,并使用id = postmenu_xxx div标签,并用类= tborder表标签(这个div和表格,他们是事我不需要)

    <div id="postmenu_11229294_menu" class="vbmenu_popup" style="display:none">.....</div> 
    <table class="tborder" cellspacing="0" cellpadding="3" border="0" align="center" width="100%">....</table> 
    
  • 我只希望它返回td标签之间的内容,如上所述。那么,我该怎么做?

+0

你能提供一个页面或不包含铁杆内容色情图片?请记住,这个网站上的人们正在从工作中访问它,我们不希望他们被保护内容过滤器绊倒。 – Kev 2012-07-22 14:41:00

+0

好的,我编辑了我的文章,谢谢Kev:D – 2012-07-23 04:59:07

+0

我添加了“php”标签;如果我猜错了,请删除它并添加正确的语言标签。谢谢。 – tripleee 2012-07-23 07:05:58

回答

0

您可能希望这样的事情您的preg_match:

preg_match("/<td id=\"td_post_\d+[^>]+>([^<]+)<\/td>/",$var,$between); 

它看起来与ID td_post_加上1只或多号的开始td标签,然后1个或多个非关闭标签相匹配字符,然后开始捕获非开放标记字符。

上述内容适用于简单情况(假设td标签中没有嵌入其他标签)。如果你需要更复杂的东西,你应该使用一个可以正确解析DOM的模块,而不是试图重新发明轮子。

编辑:它听起来像你试图解析的内容是不正确的(从你的错误信息),但不应该阻止你得到你所需要的。例如,JQuery具有强大的DOM解析功能,可以让您获取该td标签中的内容。

这就是说,你总是可以只尝试了一个不太确切的正则表达式如下图所示,但同样,没有一个适当的解析器的替代品:

preg_match("/<td id=\"td_post_\d+[^>]+>(.+?)<\/td>/",$var,$between); 
+0

嗨,但它返回空数组,而不是数组元素。任何人都帮助我? – 2012-07-22 05:58:28

+0

发布您需要在td标签之间抓取的内容示例;正如我在文章中提到的,上面的正则表达式不会处理嵌套标签。如果你需要一些东西来处理嵌套标签,我会建议使用一些东西来解析DOM。 – 2012-07-22 06:04:48

+0

好的,所以你有嵌套标签。 – 2012-07-22 06:20:56

相关问题