从脚本输出中获取文本


Get text from script output

大家好,我已经使用这个代码很长时间了

<?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文件中获取这些信息?

问候,

您需要过滤掉一些数据。试着找出你需要输出的信息中常见的内容。例如,来自原始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的行。