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"
这是数据文件中的最后一项