boolean fpassthru(resource file)
Функция fpassthru (листинг 9.20) распечатывает содержимое файла в браузере. Данные отсылаются из текущего файла, начиная с текущей позиции и до конца файла, поэтому можно прочитать несколько строк и вывести остальные строки. После отправки файл закрывается. При возникновении ошибки функция fpassthru возвращает значение FALSE. Функция gzpassthru предназначена для выполнения аналогичной операции для сжатых файлов. Для функции readfile предварительно открывать файл не требуется.

Листинг 9.20. Функция fpassthru

<?php /*
** получить Web-страницу и изменить на ней титульный тег
*/
// открыть файл с использованием http- протокола if(!($myFile = fopen("http://www.php.net/", "r"))) {
print(" нельзя открыть файл"); exit;
}
$KeepSearching = TRUE;
while(!feof($myFile) AND $KeepSearching)
{
// прочитать строку из файла $myLine = fgets($myFile, 1024);
// поиск тега тела if(eregi("<body", $myLine))
{
// после тега тела // титульный тег найти невозможно $KeepSearching = FALSE;
}
//попробовать добавить текст после титульного тега $myLine = eregi_replace("<title>",
"<title>(fpassthru example)", $myLine); // отправить строку в браузер print("$myLine");
}
// отправить остаток файла в браузер fpassthru($myFile);

 ?> 
fprintf(resource file, string format, ...)
Функция fprintf аналогична функции printf, за исключением того, что она отправляет вывод на файл. Описание функции printf см. в главе 8, "Браузер ввода-вывода".
integer fputs(resource file, string output) Функция fputs является псевдонимом функции fwrite. string fread(resource file, integer length)
Функция fread (листинг 9.21) является версией функции fgets, которая позволяет работать с двоичными файлами. Она не реагирует на символы "конец строки" и всегда возвращает количество байтов, определенных аргументом length, если до этого не будет достигнут конец файла. Эта функция необходима, если вам требуется произвести чтение из таких двоичных файлов, как файлы изображений в формате jpeg.

j Листинг 9.21. Функция fread_
<?php
/*
** Проверка файла на формат GIF89
*/
$filename = "php.gif";
$fp = fopen($filename, "r");
//получить первые 128 байтов
$data = fread($fp, 128);
// закрыть файл
fclose($fp);
// Проверка на формат GIF89 if(substr($data, 0, 5) == "GIF89")
{
print("$filename является файлом формата GIF89.n");
}
else
{
print("$filename не является файлом формата GIF89 file.n");
}
?>

array fscanf(resource file, string format, ...)
Функция fscanf (листинг 9.22) считывает строки из открытого файла и делает попытку скопировать их в переменные в соответствии с форматом, указанным в аргументе format. Если имеются только два аргумента, функция fscanf возвращает массив. В противном случае она пытается разместить значения в указанных переменных.
Аргумент format представляет собой последовательность литеральных символов и кодов для вводимой строки. Литеральные символы должны соответствовать вводимой строке. Коды задают различные типы данных, которые функция fscanf преобразует из текста в соответствующие им типы данных. Пробелы в формате соответствуют любому количеству пробелов во вводимой строке. Например, один пробел в формате может соответствовать нескольким символам табуляции при вводе. Каждый формат начинается с символа % и завершается символом, определяющим тип (табл. 9.5). Между символом % и кодом типа можно задать длину, воспользовавшись целыми числами. Длина вводимого значения должна точно соответствовать ширине.
Кроме того, между ведущим символом % и длиной можно разместить символ *, чтобы иметь возможность сканирования и удаления поля.
Язык PHP также имеет функцию sscanf для оценки строк, которая описывается в главе 12, "Кодирование и декодирование".
Операционная система
| Листинг 9.22. Функция fscanf_
<?php
$fp = fopen('data.txt', 'r');
while(!feof($fp))
{
$a = fscanf($fp,
"%*4d %*i %o %u %x %f %s %3c %[a-zA-Z] %n"); print_r($a); print("<br>");
}
fclose($fp);

?>