- •Иркутский государственный университет путей сообщения кафедра “информатика” программирование на языке php
- •Иркутск
- •Содержание
- •Внедрение php-сценария в html-документ
- •Алфавит языка
- •Служебные слова
- •Типы данных
- •Комментарии
- •Переменные
- •Математические функции
- •Математические константы
- •Выражения
- •Операторы присваивания
- •Проверка существования переменной
- •Isset(переменная);
- •Is_string(переменная);
- •Мои поздравления!
- •Платежная ведомость
- •Отладочная печать
- •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); // закрытие файла
На экран будет выведено:
Это первая строка Это вторая строка Это третья строка