此代码从另一个站点检索信息:
<?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而不是列表。
由于
答案 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;