将包含逗号分隔值行的文本文件转换为 HMTL 表

问题描述 投票:0回答:3

我正在使用 file_get_contents() 导入文本文件。 在文本文件中,格式如下(示例):

3434,83,8732722
834,93,4983293
9438,43933,34983

依此类推...基本上它遵循以下模式:整数,逗号将其分割,第二个整数,另一个逗号将其分割,第三个整数,然后开始新行。

我需要将其放入表格中,格式如下。换句话说,我将有一个 3 列的表,文本文件中的每个新行都将是表中的一个新行。

必须使用 和

将其转码为简单的 html 表格

我从未使用过多维数组并用它来分割文本。

我所能做的就是使用explode(" ", $file); 来分隔行,除此之外,我不知道如何再次分割它,也不知道如何有效地组织它以使其成为一个整齐的表格。

您可以执行以下操作:

$filename = 'abc.txt';
$content = file_get_contents($filename);
$explodedByBr = explode('<br/>', $content);
$table = "<table border='1'>";
foreach ($explodedByBr as $brExplode) {
  $explodedByComma = explode(',', $brExplode);

  $table .= "<tr>";
  foreach ($explodedByComma as $commaExploded) {
    $table .= "<td>" .$commaExploded. "</td>";
  }
  $table .= "<tr/>";
}
$table .= "</table>";

echo $table;

abc.txt 的数据格式如下:

3434,83,8732722
834,93,4983293
9438,43933,34983

<?php
    $file = 'path/to/file.txt';
    echo '<table>';
    while(!feof($file)) {
        $line = fgets($file);

        echo '<tr><td>' . implode('</td><td>',explode(',',$line)) . '</td></tr>';
    }
    echo '</table>';
?>

试试这个:

将文件读入数组,然后通过传递数组的每一行来对其进行列化

array_walk

<?php
function addElements( &$v, $k ) {
    $v1 = explode( ',', $v ); // break it into array
    $v2 = '';
    foreach( $v1 as $element ) {
        $v2 .= '<td>'.$element.'</td>';
            // convert each comma separated value into a column
    }
    $v = '<tr>'.$v2.'</tr>'; // add these columns to a row and return
}

// read the whole file into an array using php's file method.
$file = file( '1.txt' );
// now parse each line of the array so that we convert each line into 3 columns.
// For this, i use array_walk function which calls a function, addElements, 
// in this case to process each element in the array.
array_walk( $file, 'addElements' );
?>
<html>
     <head></head>
     <body>
         <table border="0">
             <?php echo implode('',$file);?>
         </table>
     </body>
</html>

希望有帮助。请参阅

file
array_walk
的 php 文档。这些都是简单又方便的功能。

php arrays csv multidimensional-array html-table
3个回答
1
投票

您可以执行以下操作:

$filename = 'abc.txt';
$content = file_get_contents($filename);
$explodedByBr = explode('<br/>', $content);
$table = "<table border='1'>";
foreach ($explodedByBr as $brExplode) {
  $explodedByComma = explode(',', $brExplode);

  $table .= "<tr>";
  foreach ($explodedByComma as $commaExploded) {
    $table .= "<td>" .$commaExploded. "</td>";
  }
  $table .= "<tr/>";
}
$table .= "</table>";

echo $table;

abc.txt 的数据格式如下:

3434,83,8732722
834,93,4983293
9438,43933,34983


0
投票
<?php
    $file = 'path/to/file.txt';
    echo '<table>';
    while(!feof($file)) {
        $line = fgets($file);

        echo '<tr><td>' . implode('</td><td>',explode(',',$line)) . '</td></tr>';
    }
    echo '</table>';
?>

0
投票

试试这个:

将文件读入数组,然后通过传递数组的每一行来对其进行列化

array_walk

<?php
function addElements( &$v, $k ) {
    $v1 = explode( ',', $v ); // break it into array
    $v2 = '';
    foreach( $v1 as $element ) {
        $v2 .= '<td>'.$element.'</td>';
            // convert each comma separated value into a column
    }
    $v = '<tr>'.$v2.'</tr>'; // add these columns to a row and return
}

// read the whole file into an array using php's file method.
$file = file( '1.txt' );
// now parse each line of the array so that we convert each line into 3 columns.
// For this, i use array_walk function which calls a function, addElements, 
// in this case to process each element in the array.
array_walk( $file, 'addElements' );
?>
<html>
     <head></head>
     <body>
         <table border="0">
             <?php echo implode('',$file);?>
         </table>
     </body>
</html>

希望有帮助。请参阅

file
array_walk
的 php 文档。这些都是简单又方便的功能。

© www.soinside.com 2019 - 2024. All rights reserved.