#8. 6 php Синтаксический разбор файла: fscanf

Для облегчения считывания данных из файла он может быть отформатирован, например, при помощи табуляций, а для выборки отдельных элементов данных разумно применить функцию 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, файл разобран и отображен корректно.



Рис. 1. Отображение файла, прочитанного с помощью fscanf

Key Words for FKN + antitotal forum (CS VSU):