[英]PHP - while loop (!feof()) isn't outputting/showing everything
我想閱讀(回聲)一個.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) "} "
基本上我的代碼沒有打印/回顯它應該或至少沒有顯示它的所有內容。
提前致謝 :)
那是因為您對 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"
哪個是數據文件中的最后一個條目
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.