正在从文件中检索信息


Retrieving info from a file

此代码从另一个站点检索信息:

<?php

    $location = $ident;
get_taf($location);
function get_taf($location) {
$fileName = "ftp://tgftp.nws.noaa.gov/data/forecasts/taf/stations/$location.TXT";
    $taf = '';
    $fileData = @file($fileName);
    if ($fileData != false) {
        list($i, $date) = each($fileData);
        $utc = strtotime(trim($date));
        $time = date("D, jS M Y Hi",$utc);
        while (list($i, $line) = each($fileData)) {
            $taf .= ' ' . trim($line);
            }
        $taf = trim(str_replace('  ', ' ', $taf));
        }

if(!empty($taf)){
    echo "Issued: $time Z
    <br><br>
    $taf";
    } else {
    echo 'TAF not available';
    }
}
?>

假设是什么样子:

 TAF KLBX 160541Z 1606/1706 15009KT P6SM FEW009 BKN013 OVC030 
 FM160900 15005KT P6SM SCT010 BKN035 
 FM161600 16010KT P6SM VCSH SCT012 BKN030 
 FM161900 18012KT P6SM SCT025 BKN040 
 FM170000 16005KT P6SM SCT012 BKN022

它最终的样子:

TAF KLBX 160541Z 1606/1706 15009KT P6SM FEW009 BKN013 OVC030 FM160900 15005KT P6SM SCT010 BKN035 FM161600 16010KT P6SM VCSH SCT012 BKN030 FM161900 18012KT P6SM SCT025 BKN040 FM170000 16005KT P6SM SCT012 BKN022

如何保持行间距???

它把所有的信息放在一行,看起来像是一个paragraoh,而不是一个列表。

感谢

您的输出包含换行字节,但在网页中,这些换行符通常被视为规则间隔字符,而不是实际的换行符(br标记用于硬换行)。PHP有一个函数可以将换行符转换为br标记,称为nl2br,所以您可以这样做:

$taf = nl2br(trim(str_replace('  ', ' ', $taf)), false);

由于您要修剪每一行的行尾,因此您还必须修改某些内容以保留它们(通过使用带有两个参数的trim或仅使用ltrim)或手动重新添加它们,如下所示:

$taf .= ' ' . trim($line) . "'n";

您也可以直接附加<br>标记,这样可以节省转换。另一种可能性是只保留/添加行尾,并将输出包装在<pre>部分中,这将消除中断标记的需要。

修改以下行

 $taf .= ' ' . trim($line);

使用PHP End of Line常量,如下所示:

 $taf .= ' ' . trim($line).PHP_EOL;