Я пытаюсь читать (и эхо) все .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) "} "
В основном мой код не печатает / не повторяет все, что ему нужно, или, по крайней мере, не показывает его.
Заранее спасибо 🙂
Thats, потому что ваш тест для 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; ?>
Также я удалил @
infront из 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"
Какая последняя запись в файле данных