2010-07-04 26 views
1

我的代码有什么问题? 我想从 得到所有日期,但我的数组是空的。file_get_contents和div

<?php 
$url = "http://weather.yahoo.com/"; 
$page_all = file_get_contents($url); 

preg_match_all('#<div id="myLocContainer">(.*)</div>#', $page_all, $div_array); 

echo "<pre>"; 
print_r($div_array); 
echo "</pre>"; 
?> 

感谢

+2

它可能wheather有一个换行符问题或不成为你的代码,它可能不是。请提供更多的调试,否则你会浪费其他时间在大雁追逐中。 – zaf 2010-07-04 16:33:20

回答

-2

试运行的正则表达式搜索之前,你的回应。然后你会知道哪个部分不工作。

+1

file_get_contents可以使用http流包装器,所以它不仅适用于本地文件 – 2010-07-04 16:33:57

+0

您每天都会学到新的东西。 – 2010-07-04 16:37:28

0

你想解析多行内容,但是你没有使用REGEX模式的多行切换。 尝试使用这样的:

preg_match_all('#<div id="myLocContainer">(.*?)</div>#sim', $page_all, $div_array); 

请注意,正则表达式是不适合分析,由于HTML文档的递阶性质HTML内容。

0

尝试添加 “m” 和 “S” 修饰符,新的生产线可能会在你需要的DIV ..这样的:

preg_match_all('#<div id="myLocContainer">(.*)</div>#ms', $page_all, $div_array); 
0

之前,正则表达式乱搞,尝试HTML刮。这HTML Scraping in Php可能会提供一些关于如何以更优雅和(可能)更快的方式做到这一点。

+0

最近有一个基于PHP 5.3构建的库(允许通过CSS等访问元素)的实现,使用了即将发布的Symfony 2的一些组件。注意:它仍然不稳定。 http://www.phparch.com/2010/04/22/four-new-php-5-3-components-and-goutte-a-simple-web-scraper/ – igorw 2010-07-05 10:32:36

0
$doc = new DomDocument; 
$doc->Load('http://weather.yahoo.com/'); 
$doc->getElementById('myLocContainer'); 
0

需要Excape特殊字符在正则表达式,如下列

~\<div id\=\"myLocContainer\"\>(.*)\<\/div\>~ 

也结帐由@eyazici所提及@kgb