Есть еще один ответ, который, я подумал, может быть хорошим дополнением к этому списку.
Если у вас установлено perl
и вы можете запускать вещи из оболочки в PHP:
$lines = exec('perl -pe \'s/\r\n|\n|\r/\n/g\' ' . escapeshellarg('largetextfile.txt') . ' | wc -l');
Это должно обрабатывать большинство разрывов строк из файлов, созданных Unix или Windows.
ДВА недостатка (как минимум):
1) Не очень хорошая идея, чтобы ваш скрипт зависел от системы, в которой он работает (возможно, небезопасно предполагать, что Perl и wc доступны)
2) Просто небольшая ошибка при выходе, и вы передали доступ к оболочке на вашем компьютере.
Как и большинство вещей, которые я знаю (или думаю, что знаю) о кодировании, я получил эту информацию откуда-то еще:
Джон Рив Артикул