file_get_contents和div

时间:2010-07-04 16:25:38

标签: php

我的代码出了什么问题? 我希望得到所有日期 但我的阵列是空的。

<?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>";
?>

由于

6 个答案:

答案 0 :(得分:0)

您想解析多行内容,但未使用REGEX模式的多行切换。 试试这个:

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

请注意,由于HTML文档的层次性,正则表达式不适合解析HTML内容。

答案 1 :(得分:0)

尝试添加“m”和“s”修饰符,新行可能在您需要的div中..就像这样:

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

答案 2 :(得分:0)

在使用REGEX之前,请尝试 HTML Scraping 。这个HTML Scraping in Php可能会提供一些关于如何以更优雅和(可能)更快的方式进行操作的想法。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您需要在正则表达式中使用Excape特殊字符,如下所示

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

如果@eyazici和@kgb

提到或者没有新行问题,请结帐

答案 5 :(得分:-2)

在运行正则表达式搜索之前测试您的响应。然后你就会知道哪个部分不起作用。