2014-09-20 115 views
1

我試圖從一個頁面獲取此消息(METAR),並顯示一切只是在沒有樣式和額外信息的其他php文件中。 目前我使用此代碼:preg_match_all顯示多個結果

<?php 
$options = array('http' => array(
'method' => 'GET', 
)); 

$config= stream_context_create($options); 
$config_final=file_get_contents('http://www.smn.gov.ar/mensajes/index.php?observacion=metar&operacion=consultar&87582=on&87641=on&87750=on&87765=on&87222=on&87761=on&87860=on&87395=on&87344=on&87166=on&87904=on&87571=on&87347=on&87803=on&87576=on&87162=on&87532=on&87497=on&87097=on&87046=on&87548=on&87217=on&87506=on&87692=on&87418=on&87574=on&87715=on&87374=on&87289=on&87852=on&87178=on&87896=on&87823=on&87270=on&87155=on&87453=on&87925=on&87934=on&87480=on&87047=on&87553=on&87311=on&87909=on&87436=on&87509=on&87912=on&87623=on&87444=on&87129=on&87371=on&87645=on&87022=on&87127=on&87828=on&87121=on&87938=on&87791=on&87448=on',false, $config); 
preg_match_all("|<td width=\"100%\">METAR (.*)</td>|sU", $config_final, $tiempo); 
echo $tiempo[1][0]; 
?> 

</div> 

使用的代碼,我只能得到第一METAR,啥子我需要的是看到他們在不同的線路,如顯示不同的結果。 任何想法?

在此先感謝

+0

爲什麼不使用的HTML解析,如'DOMDocument'?它也不錯 – Ghost 2014-09-20 01:11:12

回答

0

我建議你使用PHP的內置HTML解析器對於這一點,特別是DOMDocument,並使用DOMXpath搜尋那些針。

例子:

$url = 'http://www.smn.gov.ar/mensajes/index.php?observacion=metar&operacion=consultar&87582=on&87641=on&87750=on&87765=on&87222=on&87761=on&87860=on&87395=on&87344=on&87166=on&87904=on&87571=on&87347=on&87803=on&87576=on&87162=on&87532=on&87497=on&87097=on&87046=on&87548=on&87217=on&87506=on&87692=on&87418=on&87574=on&87715=on&87374=on&87289=on&87852=on&87178=on&87896=on&87823=on&87270=on&87155=on&87453=on&87925=on&87934=on&87480=on&87047=on&87553=on&87311=on&87909=on&87436=on&87509=on&87912=on&87623=on&87444=on&87129=on&87371=on&87645=on&87022=on&87127=on&87828=on&87121=on&87938=on&87791=on&87448=on'; 
$dom = new DOMDocument(); 
libxml_use_internal_errors(true); 
$dom->loadHTMLFile($url); 
libxml_clear_errors(); 
$xpath = new DOMXpath($dom); 

// search for td's with contains METAR 
$metars = $xpath->query('//td[contains(text(), "METAR")]'); 
if($metars->length <= 0) { 
    echo 'no metars found'; 
    exit; 
} 

$data = array(); 
foreach($metars as $metar) { 
    $data[] = $metar->nodeValue; 
} 

echo '<pre>'; 
print_r($data); 
+0

正是我在找!謝謝!祝你有一個愉快的週末 – 2014-09-20 01:37:14

+0

@Andrés很高興它有幫助 – Ghost 2014-09-20 01:40:07