Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从文件中检索信息_Php_Filenames - Fatal编程技术网

Php 从文件中检索信息

Php 从文件中检索信息,php,filenames,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

此代码从其他站点检索信息:

<?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
如何保持行的间距

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


谢谢

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

$taf = nl2br(trim(str_replace('  ', ' ', $taf)), false);
由于要修剪每一行的行尾,您还必须修改某些内容以保留它们(通过使用带有两个参数的
trim
,或者只使用
ltrim
),或者像这样手动重新添加它们:

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

您还可以直接附加

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

修改以下行

 $taf .= ' ' . trim($line);
 $taf .= ' ' . trim($line).PHP_EOL;
使用PHP行尾常量,如下所示:


如果每一行以FMxxxxxx开头,只需使用preg_replace插入
,例如:
preg_replace(“/(FM)/”、“
FM”和$taf)
。如果文件中已经包含换行符,您可以使用
nl2br($taf)
\n
(文本文件中的换行符)转换为

。我用您的建议替换了代码行,但它并不能解决问题。它是一个网页,因此仅此一项是不够的。需要使用
或使用显式

中断将输出标记为预格式化。
 $taf .= ' ' . trim($line).PHP_EOL;