0

下面是我的名为 $output 的字符串,它来自 fsockopen 和 fread。唯一可以改变的是 fread 但在此之前没有别的。

14336.0 K9IA 13-Aug-2012 1750Z washington, dc (throb) 
14336.0 K9IA 13-Aug-2012 1750Z fond du lac, wi (ssb) 
14336.0 K9IA 13-Aug-2012 1752Z calumet, wi (ssb) 
14336.0 K9IA 13-Aug-2012 1752Z carsen city, nv (ssb) 
14336.0 K9IA 13-Aug-2012 1753Z carson city, nv (ssb) 
14336.0 K9IA 13-Aug-2012 1754Z dane, wi (ssb) 
14336.0 K9IA 13-Aug-2012 1759Z dane, wi (cw) 
14336.0 KA2TED 13-Aug-2012 1759Z Carson City,NV(SSB) 
14336.0 K9IA 13-Aug-2012 1800Z dane, wi (psk) 
14336.0 K9IA 13-Aug-2012 1801Z bristol, va (psk) 
14336.0 K9IA 13-Aug-2012 1815Z caeson city, nv (rtty) 
14336.0 K9IA 13-Aug-2012 1816Z carson city, nv (rtty)

然后我获取字符串 $output 并执行以下操作:

$output = str_replace("\n", "<br>", $output);

这会在右括号 ) 之后插入换行符并形成 12 行。到目前为止完美。

我需要做的是立即获取 $output 并能够在格式良好的表格中显示它。

我的意思是......

每个都是一个字段,就像在数组中一样......我想使用与 MySql 数据相同的格式,如下所示:

    while($row = mysqli_fetch_array($result))
    echo $row['Freq'];
    echo "</td><td>";
    echo $row['Call'];
    echo "</td><td>";
    echo $row['Date'];
    echo "</td><td>"; 
    echo $row['Time'];
    echo "</td><td>";
    echo $row['CTYState'];
    echo "</td><td>";
    echo $row['Mode'];
    echo "</td><td>";

每个分开的原因是我需要使用给定字段执行其他功能,例如链接等。我已经搜索、尝试、沮丧并且知道一定有办法。我在 VB 和 PHP 中一遍又一遍地使用 MySQL 或 odbc_connect 完成此操作,但从未使用字符串。

更新....

我使用 Ed Manot 发布的方法,因为我可以将这些字段用于链接、不同颜色等......

但..........

它并不能很好地工作。我只能看到前 2 个字段。我可以看到的字段只有字段 1 和字段 3。使用您的原始代码,我只能看到 1 14336.0 而没有别的。有任何想法吗?

echo "<table border='1'>";
echo"<tr><th>FieldA</th><th>FiledB</th><th>FiledC</th><th>FieldD</th><th>FieldE</th>    <th>FiledF</th><th>FiledG</th></tr>\n";
//split the output into lines based on the line break character
$lines = explode("\n", $output);
foreach($lines as $line) {
//split the line into fields based on the space character
 $fields = explode(" ", $line);
 echo "<td>" .$fields[0]. "</td>";
 echo "<td>" .$fields[1]. "</td>";
 echo "<td>" .$fields[2]. "</td>";
 echo "<td>" .$fields[3]. "</td>";
 echo "<td>" .$fields[4]. "</td>";
 echo "<td>" .$fields[5]. "</td>";
 echo "<td>" .$fields[6]. "</td>";
 echo "<td>" .$fields[7]. "</td>";

}
echo '</table>';
4

3 回答 3

0

您需要将数据拆分为数组:

//split the output into lines based on the line break character
$lines = explode("\n", $output);
foreach($lines as $line) {
  //split the line into fields based on the space character
  $fields = explode(" ", $line);
  echo "<td>" . $fields[0] . "</td>";
  echo "<td>" . $fields[1] . "</td>";
  echo "<td>" . $fields[2] . "</td>";
  // etc...
}

http://php.net/manual/en/function.explode.php

于 2012-08-13T19:19:52.560 回答
0

不要替换回车符(如果真的有的话?)并做一些(肮脏的)比如:

$lines = explode("\n", $output);
echo '<table>';
foreach($lines as $line) {
    echo '<tr>';
    $parts = explode(" ", $line);
    echo '<td>'.implode("</td><td>", $parts).'</td>'; 
    echo '</tr>';
}
echo '</table>';

:D

于 2012-08-13T19:27:29.633 回答
0

我解决了这个问题。而不是空格,胡萝卜 ^ 被使用。它们显示为空格,但不是。使用正则表达式将 ^ 替换为“”。现在工作。

于 2012-09-18T15:07:03.060 回答