Как проверить, пуст ли текстовый файл в PHP?
Я пробовал то, что нашел в интернете, и это:
if( '' != filesize('data.txt')){ echo "The file is empty"; }
ТАКЖЕ ЭТО:
if( 0 != filesize('data.txt')){ echo "The file is empty"; }
И ни один из них не работает.
Просто используйте это сначала:
if (filesize('data.txt') == 0){ echo "The file is DEFINITELY empty"; }
если вы все еще сомневаетесь (в зависимости от того, какой пустой смысл для вас), попробуйте также:
if (trim(file_get_contents('data.txt')) == false) { echo "The file is empty too"; }
Обратите внимание на Niels Keurentjes, так как http://php.net/manual/en/function.empty.php сказал:
До PHP 5.5 пустая () поддерживает только переменные; все остальное приведет к ошибке синтаксического анализа. Другими словами, следующее не будет работать: empty (trim ($ name)). Вместо этого используйте trim ($ name) == false.
Прежде всего, равенство – это оператор ==
– вы делаете обратную проверку прямо сейчас. Но даже тогда пустота не является абсолютной, вы можете столкнуться с фальшивым текстовым файлом, который на самом деле имеет новую строку или спецификацию UTF-8 (знак байтового байта).
if(filesize($path) < 16 && empty(trim(file_get_contents($path))) ) die('This works by definition.');
Это должно быть так. Вы проверяете, равен ли размер файла 0. Вам нужен код, если размер файла отличается от 0, а затем он пуст.
if ( 0 == filesize( $file_path ) ) { // file is empty }
if (file_get_contents($file_path) != "") { echo 'file is not empty'; } else { echo 'file is empty'; }
The filesize() function returns the size of the specified file. This function returns the file size in bytes on success or FALSE on failure.
пример
<?php echo filesize("test.txt"); ?>
Я использую file_get_contents для небольших xml-файлов. Следующий код работает для меня, кредит Lex здесь, с объяснением: file_get_contents с пустым файлом, не работающим PHP
if(file_get_contents($file) !== false) { echo 'your file is empty'; } else { echo 'file is not empty'; }
Если файл пуст, файл будет возвращать 0
и мы можем использовать его как boolean
, что-то вроде:
$txtFile = "someFile.txt"; if( filesize( $txtFile ) ) { // EMPTY FILE }
Вот несколько вариантов, которые основываются на ответе Нильса Керентджеса на проверку содержимого по размеру. С этими предложениями, если размер файла удовлетворен, его содержимое «включено» на странице. http://php.net/manual/en/function.include.php
Оба проверяют, существует ли файл, а затем оценивают его на основе размера (в байтах). Если размер файла больше или равен 5 байтам, выводится сообщение об успешном завершении и содержимое файла включено. Если файл не найден или меньше 5 байт (фактически пуст), отображается сообщение об ошибке и файл не включается. При ошибке clearstatcache выполняется для предотвращения останова файла при обновлении страницы. (Я пробовал функции с / без clearstatcache, и это помогает.) http://php.net/manual/en/function.clearstatcache.php
Сам файл можно ввести:
As a string throughout: 'file.txt' As a variable: $file = 'file.txt'; As a constant (per examples): define ('FILE', 'file.txt');
Вариант №1: Функция
<?php define ('FILE', 'file.txt'); function includeFile() { if (file_exists(FILE)) { echo 'File exists!' . '<br>'; if (filesize(FILE) >= 5) { echo 'File has content!' . '<br>'; include FILE; } else { echo 'File is empty.'; clearstatcache(); } } else { echo 'File not found.'; clearstatcache();} } includeFile(); // call the function ?>
Вариант № 2: Если / Else Statement
<?php define ('NEW_FILE', 'newfile.txt'); if (file_exists(NEW_FILE) && (filesize(NEW_FILE)) >= 5){ echo 'File exists and has content!' . '<br>'; include NEW_FILE; } else { echo 'File not found or is empty.'; clearstatcache(); } ?>
Проверки можно удалить:
echo 'File exists!' . '<br>'; echo 'File has content!' . '<br>'; echo 'File is empty.'; echo 'File not found.'; echo 'File exists and has content!' . '<br>'; echo 'File not found or is empty.';