FILE_SKIP_EMPTY_LINES
действительно пропускает только пустые строки. Если у вас есть пробелы, табуляции или другие пробелы, file()
не будет считать его пустой строкой.
Он не выполняет trim
перед проверкой, он смотрит, если $line=="\n"
, и только тогда считает его пустой строкой.
В качестве альтернативы вы можете использовать:
$file = array_filter(array_map("trim", file("text.txt")), "strlen");