Php爆炸函数返回空值

时间:2016-04-01 16:00:20

标签: php file

我正在尝试使用PHP从名为test.txt的逗号分隔文本文件中读取数据。文件内容如下:

Sel,10,5,4
Tati,5,6,7
Vinny,10,10,10

我尝试使用带有fgets()的循环来读取这些值,这个循环用于逐行打印,fgets()和explode(),它们应该在每行中为每个元素写入元素。

<?php
    $file=fopen('test.txt','r');

    if(!$file)
    {
        echo "Error reading file";
        die;
    }

    echo"Reading Line by Line";

    while(!feof($file))
    {
          $pointer=fgets($file,4096);
          echo "<p>".$pointer."<p>";    
    }

    rewind($file);

    echo "Reading value by value per line";

    while(!feof($file))
    {
          $pointer=fgets($file,4096);
          $pieces = explode(",", $pointer);
          echo"<hr>";
          echo "<p> Name:".$pieces[0]."<p>";
          echo "<p> Grade 1:".$pieces[1]."<p>";
          echo "<p> Grade 2:".$pieces[2]."<p>";
          echo "<p> Grade 3:".$pieces[3]."<p>";
          echo"<hr>";
    }   
    fclose($file);
?>

但是,当我在php中使用fgets()和explode()函数时,会打印一行没有值的行。这很奇怪,因为我的文本文件中只有三行,当我使用fgets()而没有explode()时,它返回正确行数的值。

此代码有什么问题?

修改:这是我的code

1 个答案:

答案 0 :(得分:1)

@Mad我测试你的代码并解决了这个问题是因为<p>标签没有在循环中关闭,所以关闭它们并且你的问题将解决: -

<?php
$file=fopen('test.txt','r');

if(!$file)
{
    echo "Error reading file";
    die;
}

echo"Reading Line by Line";

while(!feof($file))
{
      $pointer=fgets($file,4096);
      if(strlen($pointer) !==0){
        echo "<p>".$pointer."</p>";
      }       
}

rewind($file);

echo "Reading value by value per line";

while(!feof($file))
{
      $pointer=fgets($file,4096);
      $pieces = explode(",", $pointer);
      if(strlen($pointer) !==0){
          echo"<hr>";
          echo "<p> Name:".$pieces[0]."</p>";
          echo "<p> Grade 1:".$pieces[1]."</p>";
          echo "<p> Grade 2:".$pieces[2]."</p>";
          echo "<p> Grade 3:".$pieces[3]."</p>";
          echo"<hr>";
      }
}   
fclose($file);
?>

输出: - 在我的本地电脑: - http://prntscr.com/amufst

注意: - 我的文本文件在开始和结束时都没有空行。