PHP: файловые указатели. Выборочное извлечение информации.
Роль файловых указателейПри использовании функций чтения и записи, встроенных в PHP, нужно учитывать одну особенность. Файловый дескриптор, полученный вызовом fopen(), хранит в себе информацию о текущем местоположении указателя, также называемого курсором.Указатель - это целочисленное значение, соответствующее порядковому номеру байта, от которого будет произведена следующая операция. Например, если вы создали файл и записали в него некоторое количество данных, то следующее добавление информации произойдет с места остановки предыдущей операции. В PHP существует ряд функций, позволяющих управлять файловыми указателями. Это дает возможность выполнять чтение или запись, начиная с конкретного места. Они просты в понимании, но на практике используются редко. В большинстве случаев логика приложения не требует явного управления курсорами. Важно! Функции изменения положения курсора, рассматриваемые ниже, не будут иметь никакого эффекта, если файл был открыт в режиме доступа «a» или «a+». Операции записи в таком случае будут вестись только в конец файла. Текущее местоположение указателяЕсли вы хотите получить порядковый номер байта, на котором сейчас установлен файловый указатель, используйте функцию ftell(). Её единственный параметр принимает дескриптор файла. Функция вернет целочисленное значение в случае успеха и false, если что-то пошло не так.
Заметка! При проверке возвращаемого значения нужно осуществлять строгое сравнение. В PHP число «0», что соответствует началу файла, при использовании оператора «==», может быть преобразовано к false. Сброс файлового указателя в началоДля перевода указателя в начало файла нужно использовать функцию rewind(). Она принимает всего один параметр — дескриптор файла. Функция возвращает логическое значение true в случае успеха, а false при ошибке.
Указание нового местоположенияPHP позволяет задать местоположение файлового указателя явным образом с помощью функции fseek(). Её первый параметр ожидает получить дескриптор, а второй должен быть задан положительным или отрицательным целым числом.Третий параметр является не обязательным. Он также принимает целочисленное значение и предназначен для указания места, от которого будет вестись расчет новой позиции. Однако вы не можете указать конкретную точку отсчета. Для установки третьего параметра нужно использовать представленные ниже константы. По умолчанию применяется SEEK_SET. Константы положения курсора:
|
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.