
- •Содержание
- •Внедрение php-сценария в html-документ
- •Алфавит языка
- •Служебные слова
- •Типы данных
- •Комментарии
- •Переменные
- •Математические функции
- •Математические константы
- •Выражения
- •Операторы присваивания
- •Проверка существования переменной
- •Isset(переменная);
- •Вывод данных Бесформатный вывод
- •Платежная ведомость
- •Отладочная печать
- •Var_dump(переменная);
- •Форматирование чисел
- •Number_format(переменная, точность, разделитель1, разделитель2);
- •Массивы
- •Создание массивов
- •Многомерные массивы
- •Операции над массивами Перемещение по массиву
- •Копирование массивов
- •Сортировка массивов
- •Запись значений элементов массива в переменные из списка
- •Преобразование массива в текстовую строку
- •Преобразование текстовой строки в массив
- •Функции для работы с массивами
- •Глобальные предопределенные массивы
- •Работа с формой Работу выполнил студент группы ис-09 Пупкин Василий
- •Дата и время
- •Mktime(час, мин, сек, месяц, день, год);
- •1972450760 Секунд 547902.98888889 часов 22829.291203704 дней 62.546003297818 лет
- •Date(формат, число);
- •Strtotime(дата_время, число);
- •Функции
- •Рекурсия
- •Функция dumper()
- •Функции для работы со строками
- •Регулярные выражения
- •Автономные функции
- •Текстовые файлы
- •Включение файлов
- •Получение информации о файле
- •Блокировка файлов
- •Бинарные файлы
- •Алгоритм и его свойства
- •Схемы алгоритмов
- •Пример записи алгоритма:
- •Базовые структуры
- •Цепочка
- •Ветвления
- •Альтернатива
- •Действие альтернативы:
- •If (условие)
- •Вариант 2 – с использованием операции конъюнкции
- •Часто встречающиеся ошибки программирования:
- •Переключатель
- •Часто встречающиеся ошибки программирования:
- •Бесконечные циклы
- •Циклы с предусловием
- •С хема алгоритма: Программа:
- •Часто встречающиеся ошибки программирования:
- •Циклы с постусловием
- •Программа:
- •Циклы с параметром
- •Действия цикла:
Текстовые файлы
Текстовые файлы представляют собой последовательность строк различной длины, каждая из которых заканчивается ESC-последовательностью \n – конец строки. В конце файла стоит метка EOF – End Of File.
Перед началом работы с файлом его необходимо открыть:
$fp = fopen(“путь”, “режим”);
где $fp – указатель (дескриптор) на файл – имя логического файла (файловая переменная),
путь – полный путь к файлу на внешнем носителе,
режим – режим открытия файла:
rt – чтение (read, text – текстовый): существующий файл открывается только для чтения. Если файла не существует, то функция fopen() возвращает false. После удачного открытия указатель устанавливается в начало файла.
wt – запись (write): создается новый пустой файл. Если файл с указанным именем существовал, то он очищается. В случае неверно заданного имени файла функция fopen() возвращает false.
at – добавление в конец файла (append): открывает существующий файл в режиме записи и ставит указатель в конец файла. Если файла не существует, то функция fopen() возвращает false.
rt+ - чтение с обновлением (r + w): существующий файл открывается одновременно для чтения и записи, указатель устанавливается в начало файла. Новые данные записываются поверх существующих, а не раздвигают их. Если файла не существует, то функция fopen() возвращает false.
wt+ - запись с обновлением: открывается существующий файл, одновременно он очищается. Далее режим аналогичен r+ : с файлом можно работать как в режиме чтения, так и записи.
at+ - добавление с обновлением: открывает файл в режиме чтения и записи, указатель устанавливается в конец файла, содержимое файла не уничтожается. Если указанный файл не существует, то создается новый пустой файл. Режим полезен, когда нужно что-то дописать в конец файла, и неизвестно, существует он или нет.
В случае удачного открытия файла функция fopen() возвращает дескриптор файла и true, в случае неудачи – false. Дескриптор файла служит идентификатором файла и используется операционной системой для операций с ним.
Перед работой с файлом следует проверить, открыт ли он:
if ($fp = fopen(“путь”, “режим”))
{
Операторы для работы с файлом
}
Очень часто используется специальный оператор, завершающий работу сценария, если файл не может быть открыт:
($fp = fopen(“путь”, “режим”))
or die(“Невозможно открыть файл”);
Если функция fopen() возвращает значение true, то остальная часть этого выражения не анализируется, и функция die(), которая выводит сообщение в окно браузера и завершает работу сценария, не будет вызвана. В противном случае анализируется правый аргумент операции or и выполняется функция die():
($fp = fopen(“D:/User/my_file.txt”, “wt”)) // по указанному
or die(“Невозможно открыть файл”); // пути создан //текстовый файл
// my_file.txt и открыт для записи
Если файл с таким именем уже существовал, то он очищается (из него удаляется информация).
Запись (вывод) в файл осуществляется функциями fwrite() или fputs():
fwrite($fp, $string, $length);
$fp – дескриптор файла,
$string - записываемая строка,
$length - необязательный параметр – максимальное количество байтов, которое требуется записать за один раз.
При передаче этого параметра функция fwrite() будет записывать строку $string в файл, указанный параметром $fp, пока не встретит конец строки \n или не запишет столько байтов, сколько указано в третьем параметре $length. Функция fwrite() возвращает количество записанных байтов или false в случае ошибки:
($fp = fopen(“D:/User/my_file.txt”, “wt”)) //открыт для записи
or die(“Невозможно открыть файл”);
$str=”Это первая строка\n”; // строка заканчивается символом \n
fwrite($fp, $str);
fclose($fp); // закрытие файла
($fp = fopen(“D:/User/my_file.txt”, “at”)) //открыт для добавления
or die(“Невозможно открыть файл”); //в конец файла
$str=”Это вторая строка\n”;
fputs($fp, $str);
fclose($fp); // закрытие файла
Внимание! Каждая строка, записываемая в файл, должна заканчиваться ESC-последовательностью “\n”.
Пример: записать в файл my_file.txt построчно значения элементов следующего массива my_mass34, разделяя их пробелами :
1 2 3 4
5 6 7 8
9 10 11 12
Программа:
<?php
$n = 3;
$m = 4;
$my_mass = array
(
array (1,2,3,4),
array (5,6,7,8),
array (9,10,11,12)
);
($fp = fopen(“D:/User/my_file.txt”, “wt”))//открыт для записи
or die(“Невозможно открыть файл”);
for ($i=0; $i<$n; $i++)
{
for ($j=0; $j<$m; $j++)
{
$str = sprintf("%5d", $my_mass[$i][$j]);
fwrite($fp, $str);
echo $str;
}
fwrite($fp, “\n”); // записываем символ конца строки
echo “<BR>”;
}
fclose($fp); // закрытие файла
?>
Структура файла my_file.txt:
1 2 3 4
5 6 7 8
9 10 11 12
Внимание! При записи чисел в текстовый файл оставлять между ними хотя бы по одному пробелу!
Для записи данных в файл используется еще одна функция:
file_put_contents(“путь”, “строка”);
Она позволяет записать данные в файл без его открытия и последующего закрытия. Если
нужно добавить данные в конец существующего текстового файла, то в ней используется
еще и третий аргумент FILE_APPEND:
file_put_contents(“путь”, “строка”, FILE_APPEND);
Перед чтением данных из файла его необходимо открыть для чтения:
($fp = fopen(“D:/User/my_file.txt”, “rt”)) // по указанному пути
or die(“Невозможно открыть файл”); // текстовый файл
// my_file.txt открыт для чтения
Если файл не найден, то значение дескриптора $fp будет равно false, будет выдано сообщение “Невозможно открыть файл”, и сценарий будет закончен.
Построчное чтение (ввод) из файла осуществляется функцией fgets():
fgets($fp, $length);
$fp – дескриптор файла,
$length - количество байтов, которое требуется прочитать.
При передаче этого параметра функция fgets() будет читать строку из файла, указанного параметром $fp, пока не встретит конец строки (\n), конец файла или не прочитает столько байтов, сколько указано в $length . Как правило, этот параметр всегда больше длины считываемой строки:
($fp = fopen(“D:/User/my_file.txt”, “wt”)) //открыт для записи
or die(“Невозможно открыть файл”);
$str=”Это первая строка\n”;
fwrite($fp, $str);
$str=”Это вторая строка\n”;
fwrite($fp, $str);
$str=”Это третья строка\n”;
fwrite($fp, $str);
fclose($fp); // закрытие файла
($fp = fopen(“D:/User/my_file.txt”, “rt”)) //открыт для чтения
or die(“Невозможно открыть файл”);
$str=fgets($fp, 64);
echo $str, "<BR>";
$str=fgets($fp, 64);
echo $str, "<BR>";
$str=fgets($fp, 64);
echo $str, "<BR>";
fclose($fp); // закрытие файла
На экран будет выведено:
Это первая строка
Это вторая строка
Это третья строка
Кроме построчного чтения данных из файла, можно читать файл блоками произвольной длины. Для этого используется функция:
fread($fp, $length);
$fp – дескриптор файла,
$length - количество байтов, которое требуется прочитать.
Она возвращает запрошенные данные, если только в процессе чтения не был достигнут конец файла (символы конца строки игнорируются):
($fp = fopen(“D:/User/my_file.txt”, “wt”)) //открыт для записи
or die(“Невозможно открыть файл”);
$str=”Это первая строка\n”;
fwrite($fp, $str);
$str=”Это вторая строка\n”;
fwrite($fp, $str);
$str=”Это третья строка\n”;
fwrite($fp, $str);
fclose($fp); // закрытие файла
($fp = fopen(“D:/User/my_file.txt”, “rt”)) //открыт для чтения
or die(“Невозможно открыть файл”);
$str=fread($fp, 8);
echo $str, "<BR>";
$str=fread($fp, 8);
echo $str, "<BR>";
$str=fread($fp, 8);
echo $str, "<BR>";
fclose($fp); // закрытие файла
На экран будет выведено:
Это перв ая строк а Это вт
Таким образом, ESC-последовательность \n выводится как пробел.
Прочитаем этот же файл до конца, используя функцию feof():
($fp = fopen(“D:/User/my_file.txt”, “rt”)) //открыт для чтения
or die(“Невозможно открыть файл”);
while (!feof($fp))
{
$str=fread($fp, 8);
echo $str, "<BR>";
}
fclose($fp); // закрытие файла
На экран будет выведено:
Это перв ая строк а Это вт орая стр ока Это третья с трока
Функции чтения файла, рассмотренные выше, позволяют гибко управлять процессом чтения данных. Однако если нужно просто прочитать все содержимое файла в переменную, то для этого есть хорошее простое средство – функция file_get_contents(). При ее использовании не нужно открывать и закрывать файл:
$str= file_get_contents(“D:/User/my_file.txt”);
var_dump($str);
На экран будет выведено:
string(57)"Это первая строка Это вторая строка Это третья строка "
Таким образом, ESC-последовательность \n также выводится как пробел.
Очень удобна функция file().Она формирует массив-список, каждый элемент которого содержит по одной строке (до \n) из этого файла:
$file_array= file(“D:/User/my_file.txt”);
var_dump($file_array);
На экран будет выведено:
array(3) { [0]=> string(19) "Это первая строка " [1]=> string(19) "Это вторая строка " [2]=> string(19) "Это третья строка " }
Для посимвольного чтения из файла используется функция fgetc(). Она читает очередной байт (символ) из файла:
($fp = fopen(“D:/User/my_file.txt”, “rt”)) //открыт для чтения
or die(“Невозможно открыть файл”);
while (!feof($fp))
{
$chr=fgetc($fp);
echo $chr;
}
echo “<BR>”;
fclose($fp); // закрытие файла
На экран будет выведено:
Это первая строка Это вторая строка Это третья строка