-6

このASCIIアートテーブルは、文字通り私が解析する必要があるものです。

\---------\-------------\-------------\
| Username| IP          | Connected   |
\---------\-------------\-------------\
| test    | 127.0.0.1   | Yes         |
| atest   | 192.168.2.1 | No          |
| aaa     | 1.2.3.4     | Yes         |
\---------\-------------\-------------\

そして私はそれをこのようにHTMLに変換する必要があります

    <thead>
        <tr>
            <td>Username</td>
            <td>IP</td>
            <td>Connected</td>
        </tr>
    </thead>
    <tr>
        <td>Test</td>
        <td>127.0.0.1</td>
        <td>Yes</td>
    </tr>
    <tr>
        <td>Atest</td>
        <td>192.168.2.1</td>
        <td>No</td>
    </tr>
    <tr>
        <td>aaa</td>
        <td>1.2.3.4</td>
        <td>Yes</td>
    </tr>
</table>

もちろん、内容は一例に過ぎません。行は3つだけのように40にすることができます。

問題が解決しました

4

2 に答える 2

1

テキストファイルを1行ずつ解析し、フィールドに分割する必要があります。explode各行を異なる列に分割することで役立つphp関数を見てください。次のようになります$columns = explode( "|", $line);

explodeを実行すると、php配列を受け取ります。これは、forまたはを使用してループforeachし、htmlを出力できます。

trimすべての空白を削除し、興味深いテキストのみを保持するために、爆発から戻ってきた各部分で実行することをお勧めします。

テキストを行に分割する方法がわからない場合は、次のようなものを使用して、そのためにexplodeを使用することもできます。$lines = explode( "\n", $string );

テキストファイルの読み方がわからない場合は、php関数をチェックアウトしてくださいfile_get_contents

それだけです。ここにすべての構成要素が必要です。それでは、自分でそれらをつなぎ合わせます:)

もう1つのヒントとして、水平方向の区切り線が気になる場合は、すべての行の最初の文字を比較してそれらをスキップし、。で始まる文字をスキップすることができます\。のようなもの$line[0] == '\'がトリックを行う必要があります。

于 2013-01-30T17:16:26.303 に答える
1

このようなものが機能するはずです。my_data.txt例は、文字通りあなたの例に基づいた以下を含むと呼ばれるテキストファイルです。

\---------\-------------\-------------\
| Username| IP          | Connected   |
\---------\-------------\-------------\
| test    | 127.0.0.1   | Yes         |
| atest   | 192.168.2.1 | No          |
| aaa     | 1.2.3.4     | Yes         |
\---------\-------------\-------------\

fileこれは、を使用してファイルを配列に読み取り、それを解析して<table>:に変換するPHPスクリプトです。

<?php

$data = file('my_data.txt');

if (!empty($data)) {
    $value_array = array();
    // Strip out lines like this `\---------\-------------\-------------\`
    $data = preg_replace("/\\|-/", "", $data);
    $data = trim($data);
    if(!empty($data)) {
        echo '<table border="1">';
        foreach ($data as $key => $value) {
            if (!empty($value)) {
                echo '<tr>';
                $value_array = preg_split("/|/", $value);
                foreach ($value_array as $table_cell_value) {
                    echo '<td>' . $table_cell_value . '</td>';
                }
                echo '</tr>';
            }
        }
        echo '</table>';
    }
}

?>
于 2013-01-30T17:25:44.800 に答える