PHP格式化字符串类似于MySQL数组结果

时间:2012-08-13 19:11:14

标签: php string html-table format

下面是我的字符串$ output,它来自和fsockopen和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,但从不使用字符串。

... UPDATE

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

BUT ..........

它确实不太好用。我只能看到前两个字段。我能看到的字段只是Field 1和Field 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>';

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

我弄明白了这个问题。而不是空间,使用胡萝卜。他们出现了空间,但没有。使用Regex将^替换为“”。现在工作。