2016-09-27 264 views
0

我有这个文本文件中的列:打印文本文件的内容到

https://drive.google.com/file/d/0B_1cAszh75fYSjNPZFRPb0trOFE/view?usp=sharing

我可以使用下面的代码打印:

$file = fopen("gl20160630.txt","r"); 
while(! feof($file)) 
    { 
    echo fgets($file). "<br />"; 
    } 
fclose($file); 

但它看起来是这样的:

http://imgur.com/4uM6iY7

我想要这段文字的内容文件分为四列 - 线条,说明,旧版GL代码和结束余额。如果这些列中的任何一列是空的,它应该保持空白。我只是想打印那些与====启动线>

你能帮我找到一个方法来打印像我希望的方式文本文件?

回答

0

这实际上很简单,因为您的文件每列都有严格的字符数。

所有你需要做的是以'====> {line}'开始的每一行上的substr,然后你可以通过文件中的那个位置读取每一列。

下面是使用你的文件的一个示例:

$file = fopen("gl20160630.txt","r"); 

while(! feof($file)) 
{ 
    $fullLine = fgets($file); 

    $line = substr($fullLine, 5, 4); 

    if (is_numeric($line)) { 
     $liability = trim(substr($fullLine, 10, 30)); 

     $legacy = trim(substr($fullLine, 40, 39)); 

     $balance = trim(substr($fullLine, 79, 15)); 

     if ($liability != null && $legacy != null && $balance != null) 
      echo $line." ".$liability." ".$legacy." ".$balance."\n"; 
    } 
} 
fclose($file); 

你可以看到,我要做的就是:

  • 检查,如果在列“行”字是数字
  • 然后我得到所有其他元素
  • 我通过摆脱不想要的字符(空格,...)来“清理”它们,用trim
  • 在那之后,我检查所有的元素都提起
  • 我终于显示出来

我希望这会帮助你,有一个愉快的一天;)

+0

我很害怕,上面的代码不像我想要的那样工作。我想要一行4列。但是,这是现在的样子:http://i.imgur.com/3q3XnFg.png – Rashel

+0

我不能做所有的工作适合你,你已经在一个变量中的每个数据,你可以很容易改变它的外表。 。 例如通过改变这样的: 回声$线 “ ”$责任“,” $遗留””。$平衡。 “\ n” 个; 纳入: echo $ line。“”。$ liability。“”。$ legacy。“”。$ balance。“
”; 您将显示4列。 –

+0

是的,我试过了,它工作。谢谢你的帮助。 – Rashel

相关问题