П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4096 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6757 раз(а).

Учебник HTML.
Просмотров 3718 раз(а).

Руководство по PHP5.
Просмотров 5991 раз(а).

Хостинг через призму DNS.
Просмотров 4809 раз(а).

Подборка текстов стандартных документов.
Просмотров 56245 раз(а).

Учебник PHP - Самоучитель
Просмотров 3703 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 8337 раз(а).

Внешние атаки...
Просмотров 4564 раз(а).

Учебник PHP.
Просмотров 3172 раз(а).

SSI в примерах.
Просмотров 175 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





ГЛАВА 7. Файловый ввод/вывод и файловая система

Чтение из файла

Несомненно, чтение является самой главной операцией, выполняемой с файлами. Ниже описаны некоторые функции, повышающие эффективность чтения из файла. Синтаксис этих функций практически точно копирует синтаксис аналогичных функций записи.

is_readable()

Функция is_readable() позволяет убедиться в том, что файл существует и для него разрешена операция чтения. Возможность чтения проверяется как для файла, так и для каталога. Синтаксис функции is_readable():


bool is_readable(string файл]

Скорее всего, РНР будет работать под идентификатором пользователя, используемым web-сервером(как правило, «nobody»), поэтому для того чтобы функция is_readable() возвращала TRUE, чтение из файла должно быть разрешено всем желающим. Следующий пример показывает, как убедиться в том, что файл существует и доступен для чтения:

if( is_readable($filename) ) :

  // Открыть файл и установить указатель текущей позиции в конец файла
  $fh = fopen($filename, "r");

else :
  print "$filename is not readable!";

endif;

fread()

Функция fread() читает из файла, заданного файловым манипулятором, заданное количество байт. Синтаксис функции fwrite():


int fread(int манипулятор, int длина)

Манипулятор должен ссылаться на открытый файл, доступный для чтения (см. описание функции is_readable()). Чтение прекращается после прочтения заданного количества байт или при достижении конца файла. Рассмотрим текстовый файл pastry.txt, приведенный в листинге 7.1. Чтение и вывод этого файла в браузере осуществляется следующим фрагментом:

$fh = fopen('pastry.txt', "r") or die("Can't open file!");
$file = fread($fh, filesize($fh));
print $file;
fclose($fh);

Используя функцию fllesize() для определения размера pastry.txt в байтах, вы гарантируете, что функция fread() прочитает все содержимое файла.

Листинг 7.1. Текстовый файл pastry.txt

Recipe: Pastry Dough
1 1/4 cups all-purpose flour
3/4 stick(6 tablespoons) unsalted butter, chopped
2 tablespoons vegetable shortening 1/4 teaspoon salt
3 tablespoons water

fgetc()

Функция fgetc() возвращает строку, содержащую один символ из файла в текущей позиции указателя, или FALSE при достижении конца файла. Синтаксис функции fgetc():


string fgetc(int манипулятор)

Манипулятор должен ссылаться на открытый файл, доступный для чтения (см. описание функции is_readable() ранее в этой главе). В следующем примере продемонстрированы посимвольное чтение и вывод файла с использованием функции fgetc():

$fh = fopen("pastry.txt", "r"); while(! feof($fh)) :
$char = fgetc($fh):
print $char; endwhile;
fclose($fh);

fgets()

Функция fgets() возвращает строку, прочитанную от текущей позиции указателя в файле, определяемом файловым манипулятором. Файловый указатель должен ссылаться на открытый файл, доступный для чтения (см. описание функции is_readable() ранее в этой главе). Синтаксис функции fgets():


string fgets(int манипулятор, int длина)

Чтение прекращается при выполнении одного из следующих условий:

  • из файла прочитано длина — 1 байт;
  • из файла прочитан символ новой строки(включается в возвращаемую строку);
  • из файла прочитан признак конца файла(EOF).

Если вы хотите организовать построчное чтение файла, передайте во втором параметре значение, заведомо превышающее количество байт в строке. Пример построчного чтения и вывода файла:

$fh = fopen("pastry.txt", "r");

while(! feof($fh));
  $line = fgets($fh, 4096);
  print $line. "<br>";
endwhile;

fclose($fh);

fgetss()

Функция fgetss() полностью аналогична fgets() за одним исключением — она пытается удалять из прочитанного текста все теги HTML и РНР:


string fgetss(Int манипулятор, int длина [, string разрешенные_теги])

Прежде чем переходить к примерам, ознакомьтесь с содержимым листинга 7.2 — этот файл используется в листингах 7.3 и 7.4.

Листинг 7.2. Файл science.html

<html>
<head>
<title>Breaking News - Science</title>
<body>
<h1>Alien lifeform discovered</h1><br>
<b>August 20. 2000</b><br>

Early this morning, a strange new form of fungus was found growing in 
the closet of W. J. Gilmore's old apartment refrigerator. It is not known 
if powerful radiation emanating from the tenant's computer monitor aided 
in this evolution.

</body>
</html>

Листинг 7.З. Удаление тегов из файла HTML перед отображением в браузере

<?
$fh = fopen("science.html", "r");

while(! feof($fh)) :
  print fgetss($fh, 2048);
endwhile;

fclose($fh);
?>

Результат приведен ниже. Как видите, из файла science.html были удалены все теги HTML, что привело к потере форматирования:

Breaking News - Science Alien lifeform discovered August 20. 2000 Early 
this morning, a strange new form of fungus was found growing in the closet 
of W. J. Gilmore's old apartment refrigerator. It is not known if powerful 
radiation emanating from the tenant's computer monitor aided in this 
evolution.

В некоторых ситуациях из файла удаляются все теги, кроме некоторых — например, тегов разрыва строк <br>. Листинг 7.4 показывает, как это делается.

Листинг 7.4. Выборочное удаление тегов из файла HTML

<?
$fh = fopenC'science.html", "r");
$allowable = "<br>";

while(! feof($fh)) :
  print fgetss($fh. 2048, $allowable);
endwhile;

fclose($fh);
?>

Результат:

Breaking News - Science Alien lifeform discovered August 20. 2000 Early 
this morning, a strange new form of fungus was found growing in the closet 
of W. J. Gilmore's old apartment refrigerator. It is not known if powerful 
radiation emanating from the tenant's computer monitor aided in this 
evolution.

Как видите, функция fgetss() упрощает преобразование файлов, особенно при наличии большого количества файлов HTML, отформатированных сходным образом.

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru