Как проверить, пуст ли текстовый файл в PHP?

Как проверить, пуст ли текстовый файл в 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.';