PHP读取文本文件与列分离

时间:2016-09-20 07:17:51

标签: php readfile

我有一个从我们的银行软件生成的文本文件,如下所示:

The Text File Looks like this

这是我逐行打印文本文件内容的代码:

<?php
$myFile = "20151231.txt";


 $lines = file($myFile);
 foreach ($lines as $line_num) {
    echo htmlspecialchars($line_num)."<br>";
}

打印方式如下:

But it prints like this

我只想要以:

开头的每一行
====>

我希望其他一切都被删除。

我尝试了很多,但是在文本文件图像中看起来没有打印出分隔列的行。

这就是我想要打印每一行的方式:

====>0518 Intt on Consumer Loan         401010707                                   108,149.00

我们非常感谢您对此的协助。

2 个答案:

答案 0 :(得分:1)

您可以将其打印为表格:

<?php
$myFile = "20151231.txt";
$lines = file($myFile);
echo '<table>';
foreach ($lines as $line_num) {
    if (strpos($line_num, '====>') !== false) {
        $str = trim(htmlspecialchars($line_num));
        echo '<tr>';
        echo '<td>' . getColumnText("/====>\d+/", $str) .'</td>';
        echo '<td>' . getColumnText("/\s([a-zA-Z\s]+)/", $str) .'</td>';
        $secondCol = getColumnText("/\s([0-9]+)/", $str);
        echo '<td>' . $secondCol .'</td>';
        $thirdCol = end(explode(" ", $str));
        if (trim($secondCol) === $thirdCol) {
            echo '<td style="text-align:right">' . str_repeat(" ", 10) .'</td>';
        } else {
            echo '<td style="text-align:right">' . str_repeat(" ", 10) . $thirdCol .'</td>';
        }
        echo '</tr>';
    }
}
echo '</table>';

function getColumnText($pattern, $str) {
    preg_match($pattern, $str, $matches);
    return trim(current($matches));
}

答案 1 :(得分:0)

是的,您可以使用strposregularexpression执行该操作,我只是使用strpos编写代码

<?php $myFile = "text.txt";


$lines = file($myFile);
 echo '<table cellspacing="20">';
 $linenum = 1;
 foreach ($lines as $line_num) {
    echo '<tr>';
    // check whether line conatain ====>, if you want to check starting of line then just put 0 instead of false in following condition
    if(strpos($line_num,'====>')!==false)
    {
        $texts= substr($line_num, strpos($line_num,'====>')+5);
        $textarr = explode(" ", $texts);
        echo '<td>'.$linenum.'</td>';
        foreach($textarr as $arr)
        {
            echo '<td>'.$arr.'</td>';
        }   
        $linenum++;

        //print_r($textarr);
        //echo htmlspecialchars($line_num)."<br>";

    }

}
echo '<table>';