Чтение файла функцией file get content PHP
Чтение файла или URI - обычная практика, и, как правило, это выгодно делать сразу и в полном объеме. Построчное или посимвольное чтение имеет существенное значение, но причин для этого не так много, и этим пользуются в особых случаях.
Функция file get content PHP выполняет чтение в строку от начала и до конца файла. Особенно интересно её использование, когда в качестве файла выступает адрес ресурса в Сети (URI).
Описание функции
Функция file get content PHP получает в качестве параметра имя файла или URI и выдает строку. В данном примере приведен код использования. Обращение к функции происходит четыре раза. Первый раз читается файл, который содержит просто текст, второй раз читается другой файл, который, кроме текста, имеет HTML-теги.
Следующая пара вызовов осуществляется через преобразование кодировки. Это не всегда необходимо, но в случаях, когда на выходе образуются странные символы, следует применить преобразование полученной после чтения строки, и русские буквы будут видны. Пример file get contents PHP в браузере будет отображен так, как показано ниже.
Первые два вызова функции не занимаются переводом кодировки в нужный формат, поэтому русские буквы не отображаются. Содержимое обоих файлов (local-1.txt и local-2.txt) одинаковое. Естественно, в обоих файлах есть переводы строки, но браузер их не разбирает. Функция file get content PHP читает всё как есть, но во втором файле есть нужные теги, и строчки отображаются как нужно, а не в одну строку. Данное обстоятельство не существенно, потому как по общему правилу файл читается как есть, и наличие в нем тегов актуально, когда читается HTML-страница, а там есть все необходимое. Однако данное обстоятельство, особенно факт возможного несоответствия кодировки, важно знать.
Другие параметры функции
Если нужно по-особенному что-то прочитать, например, только часть файла, или начинать с какой-то конкретной позиции в нем, можно использовать параметр смещения и количества. Однако функция file get content PHP в некоторых случаях может допустить ошибку, прочитав не то, не в том количестве или не с той позиции. Если читается не локальный файл, то заданное смещение и количество читаемых байт будут действительны. Во всех остальных случаях лучше проконтролировать результат, выдаваемый функцией. Можно задать параметр поиска файла в папке include path и параметр ресурса для чтения потоковых контекстов.
Последовательность параметров такова:
- имя файла;
- параметр поиска;
- параметр ресурса;
- смещение;
- количество.
Не желательно использовать параметр поиска, хотя в некоторых случаях это целесообразно. При чтении как локальных, так и удаленных файлов или URI лучше всегда знать, что читается и откуда. Если в URI есть специальные символы, например пробел, URI следует кодировать функцией urlencode.
Чтение файла удаленно
Здесь функция использует аналогично. Нет никаких существенных отличий, за исключением только одного обстоятельства: при первых двух вызовов PHP file get contents ошибка отсутствует.
В третьем вызове читается страница сайта. Выводится эта страница в текущее место браузера, в котором действуют вполне конкретные CSS-правила, но никак не правила открываемого сайта. Поэтому результат кода, который читает URI, не будет соответствовать действительности. Впрочем, чтение обычно преследует цели парсинга, а не отображения их в месте чтения.
Но это обстоятельство следует иметь в виду. Чтение URI - это далеко не содержание сайта, а только конкретный адрес.
Функция чтения и парсинг
При неправильном имени читаемого файла или URI возможна ошибка. Это легко отследить по отсутствию результата чтения. При неправильных других параметрах функция генерирует булево значение FALSE. Обычное использование функции чтения целиком связывается с оптовым заданием параметров сайта. Например, чтение файла конфигурации, данных о пользователях или файла настроек. Во всех таких случаях:
- результат точно определён;
- структура читаемых данных тоже.
При чтении URI заранее трудно предсказать, что и как прочитается, и прочитается ли вообще. Важно отчетливо представлять, что далеко не всегда прочитанное следует выводить в браузер. Одно дело обработка информации, другое дело попытка контролировать процесс обработки HTML-содержимого без специальных средств и предосторожности в браузере.