我的代码出了什么问题? 我希望得到所有日期 但我的阵列是空的。
<?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>";
?>
由于
答案 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)
在运行正则表达式搜索之前测试您的响应。然后你就会知道哪个部分不起作用。