从脚本输出中获取文本

时间:2014-10-16 19:14:37

标签: php output file-get-contents

每个人,我已经使用这段代码了很长时间

<?php
$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 containing METAR
$metars = $xpath->query('//td[contains(text(), "METAR SA")]');
if($metars->length <= 0) {
echo 'no metars found';
exit;
}

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

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

嗯,这个工作正常,直到负责读取输出的程序更新,现在它需要一个明确的输出。

在妈妈那里我得到了这个: http://ar.ivao.aero/weather/metar.php 但该计划需要这样:

SABE 161600Z 02006KT 9999 FEW030 24/18 Q1009 =
SAZA 161600Z 18011KT CAVOK 24/08 Q1010 =
SAZB 161700Z 27012KT CAVOK 21/09 Q1011 = 

我不认为使用像file_get_content()这样的其他脚本可能会有用,但它会再次显示我不想要的信息。 我也尝试用var_dump()替换print_r(),但是它是相同的

有什么想法吗? 无论如何,要在一个简单的txt文件中获取此信息?

此致

1 个答案:

答案 0 :(得分:1)

您需要过滤掉一些数据。尝试找出您需要输出的信息中的常见内容。例如,原始print_r数据中的所有必需信息似乎都与METAR有关。所以

echo '<pre>';
foreach($metars as $metar) {
    if(substr($metar->nodeValue, 0, 5) === "METAR") {
         echo str_replace("METAR ", "", $metar->nodeValue) . PHP_EOL;
    }
}

从输出中删除Aeropuerto FORMOSA之类的任何行。

相关问题