#8. 6 php Синтаксический разбор файла: fscanf
Primary tabs
Для облегчения считывания данных из файла он может быть отформатирован, например, при помощи табуляций, а для выборки отдельных элементов данных разумно применить функцию fscanf
. Ее синтаксис представлен ниже:
fscanf(resource handle, string format) |
Аргументами функции являются дескриптор файла и формат, заданный в виде строки. Формат задается в том же виде, что и для функции printf. Например, пусть в файле tabs.txt хранятся имена и фамилии людей, разделенные символом табуляции:
George Washington Benjamin Franklin Thomas Jefferson Samuel Adams
Анализ подобного файла при помощи fscanf
довольно прост. Вначале файл следует открыть:
<?php $handle = fopen("tabs.txt", "rb"); ...
В данном случае строка, задающая формат данных, будет следующей -- "%s\t%s\n" (строка, символ табуляции, строка, символ конца строки). При помощи функции fscanf
осуществляется считывание очередной строки из файла, а результат размещается в массиве $names
:
<?php $handle = fopen("tabs.txt", "rb"); while ($names = fscanf($handle, "%s\t%s\n")) { ... }
Выделение отдельных элементов из массива производится при помощи функции list
:
<?php $handle = fopen("tabs.txt", "rb"); while ($names = fscanf($handle, "%s\t%s\n")) { list($firstname, $lastname) = $names; ... }
Наконец, результат обработки файла отображается в окне браузера, что демонстрирует пример 1.
Пример 1. Чтение файла при помощи fscanf
<HTML> <HEAD> <TITLE>Чтение файла при помощи fscanf</TITLE> </HEAD> <BODY> <CENTER> <H1> Чтение файла при помощи fscanf </H1> <?php $handle = fopen("tabs.txt", "rb"); while ($names = fscanf($handle, "%s\t%s\n")) { list($firstname, $lastname) = $names; echo $firstname, " ", $lastname, "<BR>"; } fclose($handle); ?> </CENTER> </BODY> </HTML>
Как видно из рисунка 1, файл разобран и отображен корректно.
- Log in to post comments
- 273 reads