我正试图从天气网络中拉出天气。这段代码给了我,但它看起来很长,并且在数组中返回两个值(这就是为什么我需要返回$ output [1]而不是$ output [0]),当我只想要它返回一个时。有什么想法吗?
$url=file_get_contents("http://www.theweathernetwork.com/weather/cans0057?ref=homecity");
preg_match('/<div id="obs_conds" class="hslice">.*?<img.*?alt="(.*?)".*?<\/div>/s',$url,$output);
print_r($output[1]);
答案 0 :(得分:3)
我认为这很棒。也许你可以从它做出快捷方式
preg_match('/class="hslice">.*?<img.*?alt="(.*?)"/s',$url,$output);
答案 1 :(得分:0)
我相信preg_matches在数组$ output [1]的第一个元素中返回整个匹配,而$ output [1]返回与第一个捕获的带括号的子模式匹配的文本,依此类推(http://php.net /manual/en/function.preg-match.php)。关于正则表达式优化,我猜你试图将所有内容都拉到<div id="obs_conds" class="hslice">
内,如果是这种情况,我会尝试进行dom搜索。
另一方面,最好的解决方案可能是联系该站点并设置一个Web服务客户端。在我看来,他们确实有这种基础设施。