PHP – while循环(!feof())不输出/显示所有内容

我正在尝试读取(和回显).txt文件的所有内容。

这是我的代码:

$handle = @fopen("item_sets.txt", "r"); while (!feof($handle)) { $buffer = fgets($handle, 4096); $trimmed = trim($buffer); echo $trimmed; } 

这是我的“item_sets.txt”: http ://pastebin.com/sxapZGuW

但是它不会回应所有的东西(并且会根据是否有多less个字符在它后面回显而改变显示的数量)。 var_dump()告诉我最后一个string永远不会打印出来。 看起来像这样:

" string(45) ""[cu_well_tra 。但是如果我把一个

echo "whateverthisisjustarandomstringwithseveralcharacters";

我最后的输出行如下所示:

" string(45) ""[cu_well_traveled_ak47]weapon_ak47" "1" " string(5) "} "

基本上我的代码是不打印/回应所有应该或至less不显示它。

提前致谢 :)

那是因为在输出上一次读取之前,您对EOF的testing

作为阅读过程的一部分,请尝试使用EOFtesting

 <?php $line_count = 0; $handle = fopen("item_sets.txt", "r"); if ($handle) { while (($buffer = fgets($handle, 4096)) !== false) { $trimmed = trim($buffer); echo $trimmed; $line_count++; } } else { echo 'Unexpected error opening file'; } fclose($handle); echo PHP_EOL.PHP_EOL.PHP_EOL.'Lines read from file = ' . $line_count; ?> 

另外,我也删除了这个fopen错误的做法,更好的做法是寻找并处理这些错误。

我将你的数据复制到一个名为tst.txt的文件中,并运行这个确切的代码

 <?php $handle = fopen('tst.txt', 'r'); if ($handle) { while (($buffer = fgets($handle, 4096)) !== false) { $trimmed = trim($buffer); echo $trimmed; } } else { echo 'Unexpected error opening file'; } fclose($handle); 

它产生了这个输出(这里只显示一小部分)

 "item_sets"{"set_community_3"{"name" "#CSGO_set_community_3""set_description" "#CSGO_set_community_3_desc""is_collection" 

最后的输出是

 [aa_fade_revolver]weapon_revolver" "1" 

这是数据文件中的最后一项