从文件中检索信息

时间:2012-03-16 06:54:16

标签: php filenames

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

<?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而不是列表。

由于

2 个答案:

答案 0 :(得分:1)

您的输出包含换行字节,但在网页中,这些换行符通常被视为常规间距字符而不是实际换行符(br标记用于硬换行)。 PHP具有将换行符转换为nl2br br标记的功能,因此您可以执行此操作:

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

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

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

您还可以直接附加<br>代码,这样可以节省转化费用。另一种可能性是保留/添加行结尾并将输出包装在<pre>部分中,这将消除对break标记的需要。

答案 1 :(得分:1)

修改以下行

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

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

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