0

以下は、fsockopen と fread から派生した $o​​utput という私の文字列です。変更できる可能性があるのはフレッドだけですが、これより前のことは何もありません。

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>";

それぞれが別々である理由は、特定のフィールドでリンクなどの他の機能を実行する必要があるためです。私は検索し、試み、挫折し、方法があるに違いないことを知っています。MySQL または odbc_connect を使用して VB と PHP でこれを何度も繰り返しましたが、文字列を使用したことはありません。

アップデート....

リンク、異なる色などのフィールドを使用できるようになるため、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

私は問題を理解しました。スペースの代わりにニンジン ^ が使用されました。それらはスペースとして表示されましたが、そうではありませんでした。正規表現を使用して ^ を " " に置き換えました。今すぐ動作します。

于 2012-09-18T15:07:03.060 に答える
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 に答える