从多行字符串创建HTML表

时间:2013-04-06 03:41:45

标签: php html-table

我想采用如下格式的文本文件:

*注意我可以更改存储消息的格式,基本上有分隔符和不同的行

;68.229.164.10:4/5/2013:Hello 
;71.73.174.13:4/6/2013:Oh Hey

(; IPADDRESS:时间戳:MESSAGE)

并将其放在一个看起来像这样的表中:

 IP                       Time                  Message
 68.229.164.10            4/6/2013              Hello
 71.73.174.13             4/6/2013              Oh Hey

2 个答案:

答案 0 :(得分:0)

我更喜欢使用以下内容:

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

然后相应地格式化输出。

从上面引用的页面上的示例1开始:

<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
?>

所以,你可以这样做......

<?php
$row = 1;
if (($handle = fopen("path_to_your_data_file", "r")) !== FALSE) {

    echo '<table>';
    echo '<tr><td></td>IP<td>Time</td><td>Message</td></tr>';

    while (($data = fgetcsv($handle, 1000, ":")) !== FALSE) {
        $num = count($data);
        $row++;
        if ($num > 2) {
           echo '<tr>';
           for ($c=0; $c < $num; $c++) {
              echo '<td>'.$data[$c].'</td>';
           }
           echo '</tr>';
        }
    }

    echo '</table>';
    fclose($handle);
}
?>

答案 1 :(得分:0)

$a=";68.229.164.10:4/5/2013:Hello
;71.73.174.13:4/6/2013:Oh Hey";

preg_match_all('{;(.*?):(.*?):(.*)}',$a,$d);

//set th
$d[0][0]='IP';
$d[0][1]='TIME';
$d[0][2]='Message';

$table = '<table>'.PHP_EOL;
foreach($d AS $tr){
    $row = PHP_EOL;
    foreach($tr AS $td){
        $row .= "<td>{$td}</td>".PHP_EOL;
    }
     $table .= "<tr>{$row}</tr>".PHP_EOL;
}
$table .= "</table>".PHP_EOL;
echo $table;