我一直在努力学习如何在PHP中使用file_get_contents,并尝试使用它来http://www.rssweather.com/wx/us/in/knight/wx.php在我的页面上显示天气。
<?php
$ref = file_get_contents('http://www.rssweather.com/wx/us/in/knight/wx.php.');
echo $ref;
?>
显然这显示了我在屏幕上引用的整个页面,这不是我想要的。我试图只显示当前的天气,无论是简单的文字还是其他形式。我花了一些时间试图弄清楚如何只用file_get_contents引用文件的一部分,但我没有运气搞清楚。我看到人们在引用的页面中操纵看似变量的东西,但我无法弄清楚如何通过我的代码访问这些变量。有人会就如何最好地解决这个问题提出任何建议吗?
答案 0 :(得分:1)
作为如何使用DOMDocument
来捕获所需信息的基本示例,以下内容将为您提供一个开端。
libxml_use_internal_errors( true );
$dom=new DOMDocument;
$dom->validateOnParse=false;
$dom->standalone=true;
$dom->strictErrorChecking=false;
$dom->recover=true;
$dom->formatOutput=false;
$dom->loadHTMLFile( $url );
libxml_clear_errors();
$xp=new DOMXPath( $dom );
$col=$xp->query('//div[@id="current"]/div');
if( !empty( $col ) ){
foreach( $col as $node )echo $node->nodeValue;
}
雷暴风暴温度:68°F湿度:84%风速:14英里/小时风速 方向:NW(320°)气压计:29.94 in。露点:63°F热指数:68°F 风寒:68°F可见度:10英里日出:5:54 AM CDT日落:7:39 PM CDT更新时间:下午10:54 CDT SAT 2017年4月29日
更新了代码以包含libxml
错误处理,并为DOMDocument
添加了其他标记。
要保留原始格式,您可以使用cloneNode
$url='http://www.rssweather.com/wx/us/in/knight/wx.php';
libxml_use_internal_errors( true );
$dom=new DOMDocument;
$dom->validateOnParse=false;
$dom->standalone=true;
$dom->strictErrorChecking=false;
$dom->recover=true;
$dom->formatOutput=false;
$dom->loadHTMLFile( $url );
libxml_clear_errors();
$xp=new DOMXPath( $dom );
$col=$xp->query( '//div[@id="current"]/div' );
if( !empty( $col ) ){
foreach( $col as $node ){
$html=new DOMDocument;
$clone = $node->cloneNode( true );
$html->appendChild( $html->importNode( $clone, true ) );
echo $html->saveHTML();
}
}
$dom = $xp = $col = $html = $clone = null;