使用file_get_contets PHP仅显示一些信息

时间:2017-04-30 06:52:28

标签: php file-get-contents

我一直在努力学习如何在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引用文件的一部分,但我没有运气搞清楚。我看到人们在引用的页面中操纵看似变量的东西,但我无法弄清楚如何通过我的代码访问这些变量。有人会就如何最好地解决这个问题提出任何建议吗?

1 个答案:

答案 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;