为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
至尊宝的传说 2019-12-07 14:06:29
我想阅读(回声)一切为.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) "}"基本上,我的代码没有打印/回显它应该显示的所有内容,或者至少不显示它。提前致谢 :)
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

那是因为您对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"

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


查看完整回答
反对 回复 2019-12-07
  • 2 回答
  • 0 关注
  • 610 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信