2017-06-08 2 views
1

私はfgetsを初めて使っていますが、この行を読み込むコードを持っていますが、その行に到達するまでは何も理由なくスキップします。私のtxtファイルに、私はそれを読むようにします。fgets行をスキップするとすべての行が読み込まれない

ABCDEF1 SDDFS775A          QQ   O9 
ABCDEF1 SDDFS77577432B               3.00                           
ABCDEF1 1234567C  newCODE 123456  123456789      83131   DIED 
ABCDEF1 1234567C            999999        9999999 999999     999999 
ABCDEF1 1234567D   20170606    51QAZZ 345DDW             LOVE 

コード:

$handle = @fopen($name, 'r'); 
if ($handle) { 
    while ($row = fgets($handle,4096)) { 
     echo $row; 
    } 
} 

が、私はこの行

ABCDEF1 1234567C            999999 

まで読み取ることができますが、私はこの行

ABCDEF1 1234567D   20170606    51QAZZ 345DDW             LOVE 

どれ理由を読み取ることができませんか?

+1

行が4096文字を超えていませんか?もしあなたがそれを残したらどうなりますか? – Barmar

+0

@Barmar私は試みましたが、どちらもうまくいきません...私は8000を同じまま置いています – N00bMagg

+0

上記のように、長さはfgetsには必要ありません。あなたがそれを省略するとどうなりますか? – Andreas

答えて

1

コードに問題があります。fgetsstring fgets (resource $handle [, int $length ])です。 2番目のパラメータは、読み込む文字の長さです。ドキュメントを参照してくださいhere

2番目のパラメータは空のままにしてください。これを試してみてください:

$fp = fopen("fichero.txt", "r"); 
    while(!feof($fp)) { 
     $linea = fgets($fp); 
     echo $linea . "<br />"; 
} 
fclose($fp); 
+0

これは、行が4096文字より長い場合にのみ問題になります。 – Barmar

+0

試してみましたが、運がない – N00bMagg

+0

@ N00bMaggこのようなものを試してみてください。コードを変更しました – xsami

関連する問題