douke3335 2013-01-30 17:14
浏览 13
已采纳

如何将高度格式化的文本表数据转换为HTML? [关闭]

This ASCII-art table is literally what I need to parse:

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

And I have to convert it into HTML like this

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

Of course the content is only an example. The rows can be 40 like only 3.

Problem Solved

  • 写回答

2条回答 默认 最新

  • duanbei7005 2013-01-30 17:25
    关注

    Something like this should work. Example is a text file called my_data.txt which contains the following which is literally based on your example:

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

    Here is the PHP script that reads the file into an array using file and then parses it into a <table>:

    <?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>';
        }
    }
    
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)