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

PHP - while loop (!feof()) isn't outputting/showing everything

提问人:njoye 提问时间:12/23/2015 最后编辑:RiggsFollynjoye 更新时间:12/23/2015 访问量:4044

问:

我正在尝试读取(并回显).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

但它并不能呼应所有内容(并根据我是否以及在它之后回声的字符数量来改变它显示的量)。 向我显示最后一个字符串永远不会完成打印出来。它看起来像这样:var_dump()

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

echo "whateverthisisjustarandomstringwithseveralcharacters";,

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

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

基本上,我的代码没有打印/回显它应该显示的所有内容,或者至少没有显示它。

提前致谢:)

php while-loop 输出 fopen

评论

1赞 ob_start 12/23/2015
为什么不在这里使用?print file_get_contents()
0赞 njoye 12/23/2015
@ob_start仍然没有打印所有内容
1赞 Ryan Vincent 12/23/2015
您的代码没有任何问题 - 它会读取所有行并输出它们。除了 “吃掉”所有标记,所以当你回声时,你需要使用 .即。否则,你会得到一长行输出。trimend of linePHP_EOLecho $trimmed, PHP_EOL;

答:

3赞 RiggsFolly 12/23/2015 #1

这是因为您的EOF测试是在输出上次读取之前进行的

作为阅读过程的一部分,尝试使用 EOF 测试进行此操作

<?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"

这是数据文件中的最后一个条目

评论

0赞 njoye 12/23/2015
这也不是打印所有内容:/这可能只是一个输出问题吗?
0赞 RiggsFolly 12/23/2015
添加调试行,看看它是否真的在绕着那个循环转
0赞 njoye 12/23/2015
井。。。现在它不再显示任何内容,它甚至没有显示除了导航栏之外我身边的 html 文档
0赞 RiggsFolly 12/23/2015
你有没有看过任何提示。还要记住,我只能看到你向我展示的内容,我没有看到html,因此我将其视为独立的代码php error log
0赞 njoye 12/23/2015
错误日志的最后一个日志是我尝试将其打印出来时file_get_contents()