Php построчное чтение строки

fgets

Указатель на файл должен быть корректным и указывать на файл, успешно открытый функциями fopen() или fsockopen() (и все еще не закрытым функцией fclose() ).

Чтение заканчивается по достижении length — 1 байт, если встретилась новая строка (которая включается в возвращаемый результат) или конец файла (что встретилось первым). Если длина не указана, чтение из потока будет продолжаться до тех пор, пока не достигнет конца строки.

Замечание:

До версии PHP 4.3.0, опущение этого параметра означало, что длина строки будет равна 1024 символам. Если большинство строк в файле больше 8 килобайт, в целях производительности вашего скрипта стоит указать максимальную длину строки.

Возвращаемые значения

Возвращает строку размером в length — 1 байт, прочитанную из дескриптора файла, на который указывает параметр handle . Если данных для чтения больше нет, то возвращает FALSE .

В случае возникновения ошибки возвращает FALSE .

Список изменений

Версия Описание
4.3.0 fgets() теперь безопасна для обработки бинарных данных

Примеры

Пример #1 Построчное чтение файла

$handle = @ fopen ( «/tmp/inputfile.txt» , «r» );
if ( $handle ) while (( $buffer = fgets ( $handle , 4096 )) !== false ) echo $buffer ;
>
if (! feof ( $handle )) echo «Error: unexpected fgets() fail\n» ;
>
fclose ( $handle );
>
?>

Примечания

Замечание: Если у вас возникают проблемы с распознаванием PHP концов строк при чтении или создании файлов на Macintosh-совместимом компьютере, включение опции auto_detect_line_endings может помочь решить проблему.

Замечание:

Программисты, привыкшие к семантике ‘C’ функции fgets() , должны принимать во внимание разницу в том, каким образом возвращается признак достижения конца файла (EOF).

Смотрите также

  • fgetss() — Прочитать строку из файла и отбросить HTML-теги
  • fread() — Бинарно-безопасное чтение файла
  • fgetc() — Считывает символ из файла
  • stream_get_line() — Получает строку из потокового ресурса до указанного разделителя
  • fopen() — Открывает файл или URL
  • popen() — Открывает файловый указатель процесса
  • fsockopen() — Открывает соединение с интернет сокетом или доменным сокетом Unix
  • stream_set_timeout() — Устанавливает значение тайм-аута на потоке

Источник

Чтение и запись данных в файле

При изучении данной темы нужно учитывать, что для обращенияк файлу одни функции используют дескриптор файла, а другие путь к файлу. Для получения дескриптора нужно открыть файл. Это рассматривалось в предыдущей теме.

Чтение из файла

Функцию fread() можно использовать для получения определённого количества данных из файла.

длина — размер данных в байтах

Если конец файла будет достигнут раньше, чем функция прочитает указанный размер данных, то она вернёт строку меньшего размера. Данную функцию удобно применять для чтения бинарных файлов.

При указании длины строки и при перемещении указателя нужно учитывать, что русские буквы имеют размер не один байт, а больше. Подробнее об этом сказано в теме «Работа со строками». Также не забудте, что в начале файла в кодировке UTF-8 есть несколько байт. В кодировке UTF-8 без BOM эти байты отсутствуют.

Прочитаем перыве 10 байт из файла myfile.txt. Откроем его в режиме ‘r+’. Указатель будет находится в начале.

$file = fopen('myfile.txt', 'r+'); $take = fread($file, 10); echo $take;

Если в файле присутствуют русские буквы, то последняя буква может отображаться неправильно. Это происходит потому, что символ имеет размер больше одного байта и одна часть прочитана, а вторая нет.

Функция fgets() возвращает одну строку, начиная от указателя до конца строки.

длина — позволяет указать максимальный размер строки в байтах. Необязательный параметр.

Запуск функции в цикле позволяет произвести чтение файла построчно.

Прочитаем одну строку строку из файла myfile.txt. Так как указатель уже перемещён, то будет прочитана не вся строка, а от указателя.

$take = fgets($file); echo '
'.$take;

Функция fgetss() также возвращает одну строку, но удаляет из неё HTML теги. Если в коде присутствует PHP скрипт, то он тоже будет удалён.

fgetss (файл, длина, нужные тэги)

длина — размер строки в байтах. Необязательный параметр.

нужные теги — позволяет указать тэги, которые не будут удалены.

Существует функция fgetc() , которая возвращает один символ из файла.

Функция file() читает весь файл и помещает данные в массив. Каждая строка помещается в элемент массива. Для работы этой функции не требуется открывать файл. Расположение указателя не учитывается.

file (путь к файлу, флаги, контекст)

путь к файлу — абсолютный или относительный путь к файлу

флаги — флаги, определяющие работу функции. Необязательный параметр.

Можно указать такие флаги:

FILE_USE_INCLUDE_PATH — позволяет искать файл в папках include path.

FILE_IGNORE_NEW_LINES — удаляет символ конца строки. Если этот флаг не установлен, то в каждой строке будет символ конца строки.

FILE_SKIP_EMPTY_LINES — не добавляет в массив пустые строки.

Если указывается несколько флагов, то они разделяются оператором «|».

контекст — позволяет указать ресурс контекста

Выведем файл myfile.txt на страницу.

$ar = file('myfile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); echo '
'; print_r($ar);

Запись в файл

Функция fwrite() записывает данные в файл.

данные — данные, которые записываются

длина — максимальный размер записываемых данных в байтах. Может быть записана не вся строка, а только указанное количество байт. Необязательный параметр.

Если указатель находится в начале или середине файла, функция заменяет символы, находящиеся в файле, на новые. То есть, если записывается 5 символов, то из файла удаляются 5 символов и на их место добавляются новые.

Когда вы записываете русские буквы, то кодировка скрипта должна соответствовать кодировке файла.

Запишем в файл строку «текст из скрипта». В нашем примере дескрептор находится в середине файла и строка запишется туда. Когда нужно добавить данные в конец файла, то его можно открыть в режиме ‘a’. А когда нужно перезаписать файл, его открывают в режиме ‘w’. Мы не будем передвигать указатель, запишем данные туда, где он находится.

$text = 'текст из скрипта'; fwrite($file, $text);

Коприрование материалов сайта возможно только с согласия администрации

2017 — 2023 © basecourse.ru Все права защищены

Источник

Читайте также:  Testing Buttons with JS
Оцените статью