Получить строку из file_get_content , помогите

Я об этом подумал, но в варианте list($title,) = explode() но посчитал что разбивать текст в массив - намного хуже по ресурсам- хотя это экономия на спичках.
В том-то и дело, что без list-а.
Explode по некоторым тестам на 50-70% быстрее preg_match, так что это никак не может быть экономия на спичках.
А насчет массива - ты делаешь точно такое же разбитие на массив с помощью preg_match("/^.*\n/Uis", $text , $title_preg); и на выходе имеешь массив $title_preg :confused:
+ PHP_EOL в принципе как и с \n нужно быть осторожнее (если посчитать это аксиомой как перенос строки)- если вдруг файлик создадите под виндой в блокноте и перекините на серв, то при разбиении только по \n (сам символ уйдёт) но \r останется. Неприятный и неочевидный баг, который может всплыть неожиданно.
Дык, ты вроде напрямую по \n разбиваешь с точно такими же последствиями, или я не прав?
 
В том-то и дело, что без list-а.
Explode по некоторым тестам на 50-70% быстрее preg_match, так что это никак не может быть экономия на спичках.
А насчет массива - ты делаешь точно такое же разбитие на массив с помощью preg_match("/^.*\n/Uis", $text , $title_preg); и на выходе имеешь массив $title_preg :confused:
в контексте данной задачи- что делает explode? он проходит весь файл, обнаруживая символ разбиения - заносит в новый элемент. А preg - доходит только до первого символа \n и прекращает работу. И Массив будет не с 100500 элементами а всего с 1-м. Даже логически можно прикинуть что прег тут будет быстрее. Проверил для небольшого текста explode - 2.128 preg- 0.3779 . А экономия на спичках, в том, что такая разница для 100к итераций. Преимущество в 2 сек не играет большой роли, это скорее всего не будет бутылочным горлышком.

Дык, ты вроде напрямую по \n разбиваешь с точно такими же последствиями, или я не прав?
Я не разбиваю по \n я беру строку вместе с ним, после этого есть все предпосылки тримить строку.
Просто был случай- файл сохранён под виндой (разделитель \r\n) перекинут на серв, там с помощью PHP_EOL была разбита (но там не винда, символ \n убрался и каретка осталась). Тк PHP_EOL был принят за аксиому как символ разбиения и сроку никто не тримил. Затем умный парсер обнаружив левый символ определил кодировку как корейскую, и внезапно половина текста исчелза с сайта, хотя всё вроде бы было верно)
 
KillDead, кстати, у explode есть параметр limit
array explode ( string $delimiter , string $string [, int $limit ] )
Так что можно и им было обойтись.
 
Назад
Сверху