SlideShare a Scribd company logo
1 of 75
Download to read offline
Учебное пособие
«WEB ПРОГРАММИРОВАНИЕ»
Алматы 2015
2
Рецензент:
Абдуллина А. М. – преподаватель спецдисциплин высшей категории Алматинского
Государственного Политехнического Колледжа.
Учебное пособие. «WEB ПРОГРАММИРОВАНИЕ» – Алматы, 2015 – 75 с.
Данное пособие является сборником теоретических и практических материалов по
дисциплине «Web программирование» для специальности 1305000 «Информационные системы».
Пособие содержит материалы, посвященные изучению основ языка программирования PHP,
который в настоящее время является одним из наиболее популярных для реализации WEB
приложений, рассмотрению круга вопросов, сгруппированных по назначению прикладных
аспектов применения языка PHP и его функциональных возможностей.
Сборник предназначен для преподавателей и студентов колледжа.
3
Содержание
Основы языка PHP 4
1 Введение в серверные сценарии для Web 4
2 Синтаксис и данные в PHP 6
3 Управляющие конструкции языка PHP и функции 13
4 Передача параметров сценариям с помощью web-форм 18
5 Использование регулярных выражений 20
6 Работа с файлами в РНР 23
Разработка web-приложений в PHP 27
7 Базы данных и основные конструкции языка SQL 27
8 Взаимодействие PHP с сервером баз данных MySQL 28
9 Обработка исключений и ошибок в PHP 30
10 Сервисы web-сайта. Создание графики в PHP 32
11 Безопасность web-приложений 35
12 Сеансы, cookie и сетевые функции в PHP 38
13 Основы объектно-ориентированного программирования в PHP 41
14 Взаимодействие PHP и XML 43
15 Инструментальные средства и практические аспекты разработки web-сайтов 45
16 Лабораторные работы 47
17 Тестовые задания для самоконтроля 69
18 Глоссарий 72
19 Перечень использованной литературы 74
4
Введение
Под современными технологиями программирования сегодня понимают в основном,
Интернет-технологии, включающие в себя концептуальные знания WWW и HTML, Java,
клиентских и серверных скриптов и языков запросов к базам данных, основы web-дизайна. Однако
наиболее важной частью профессиональной подготовки специалиста является умение работать
над большим проектом, быть в “команде” и доводить проект от замысла до реализации.
В силу специфичности производства ПО (практически нулевая стоимость тиражирования,
очень быстрый процесс устаревания и т. д.) технология его создания очень сильно завязана на
человеческий ресурс и поэтому должна включать в себя организационный и управленческий
аспекты. На сегодняшний день в мире существует огромное количество различных процессов для
создания ПО. Тем не менее, именно технологий, рассматривающих полный жизненный цикл
проекта разработки ПО, сочетающих в себе научный подход, серьезную базу исследований и
имеющих историю реального использования и адаптации, относительно немного.
Нас интересует разработка того, что мы будем называть промышленными программными
продуктами. Они применяются для решения самых разных задач, таких, например, как системы с
обратной связью, которые управляют или сами управляются событиями физического мира и для
которых ресурсы времени и памяти ограничены; задачи поддержания целостности информации
объемом в сотни тысяч записей при параллельном доступе к ней с обновлениями и запросами;
системы управления и контроля за реальными процессами (например, диспетчеризация
воздушного или железнодорожного транспорта). Системы подобного типа обычно имеют большое
время жизни, и большое количество пользователей оказывается в зависимости от их нормального
функционирования. В мире промышленных программ мы также встречаем среды разработки,
которые упрощают создание приложений в конкретных областях, и программы, которые
имитируют определенные стороны человеческого интеллекта.
Существенная черта промышленной программы - уровень сложности: один разработчик
практически не в состоянии охватить все аспекты такой системы. Грубо говоря, сложность
промышленных программ превышает возможности человеческого интеллекта. Увы, но сложность,
о которой мы говорим, по-видимому, присуща всем большим программных системам. Говоря
"присуща", мы имеем в виду, что эта сложность здесь неизбежна: с ней можно справиться, но
избавиться от нее нельзя.
В последние годы прошлого века появился и очень быстро завоевал огромную
популярность новый класс приложений – так называемые Web-приложения. Обеспечивающие
доступ через Интернет или интрасеть к информационным системам и базам данных, Web-
приложения стали одним из наиболее эффективных инструментов современного бизнеса.
Для разработки Web-серверов, являющихся Web-приложениями, широко используется язык
разметки гипертекста HTML (HyperText Markup Language). Фактически, все страницы, которые
видят посетители Web-сервера, составлены на языке HTML и содержат объекты различных типов
(изображения, анимацию, формы для ввода информации и т.д.). Если Web-сервер содержит только
статическую информацию, изменяющуюся эпизодически, ее можно представить в виде набора
документов HTML. Для их создания подходить практически любой текстовый редактор (даже
простейший Notepad), хотя лучше воспользоваться специальными средствами визуального
проектирования страниц HTML, такими, как Microsoft FrontPage.
Сам по себе язык HTML несложен, однако эта простота обманчива. В силу ограниченности
его возможностей и ряда других обстоятельств приходится немало потрудиться, чтобы получить
желаемый результат. Одна и та же страница может по-разному отображаться в различных
браузерах, поэтому при проектировании Web-страниц вопросам совместимости с браузерами
приходится уделять особое внимание. Чтобы ускорить загрузку страниц, необходимо
минимизировать общий объем расположенных на них иллюстраций.
5
Раздел № 1 «ОСНОВЫ ЯЗЫКА PHP»
Лекция 1: “ВВЕДЕНИЕ В СЕРВЕРНЫЕ СЦЕНАРИИ ДЛЯ WEB”
План лекции:
Служба WWW и схема HTTP-сеанса.
Сервер WWW.
Стандарт CGI.
Характеристика системы PHP.
Конспект лекции
Служба WWW и схема HTTP-сеанса
Интернет построен по многоуровневому принципу от физического уровня, связанного с
физическими аспектами передачи двоичной информации, и до прикладного уровня,
обеспечивающего интерфейс между пользователем и сетью. Базовым протоколом сети
гипертекстовых ресурсов Web является протокол HTTP.
HTTP (Hypertext Transfer Protocol) - протокол передачи гипертекста, протокол высокого
уровня (уровня приложений) используется службой WWW для передачи Web-страниц.
"Классическая" схема HTTP-сеанса:
 установление TCP-соединения;
 запрос клиента;
 ответ сервера;
 разрыв TCP-соединения.
HTTP предоставляет набор методов для указания целей запроса, отправляемого серверу.
Протокол HTTP реализует принцип запрос/ответ. Запрашивающая программа–клиент
инициирует взаимодействие с отвечающей программой–сервером и посылает запрос, содержащий:
 метод доступа;
 адрес URI;
 версию протокола;
 сообщение с информацией о типе передаваемых данных, информацией о клиенте,
пославшем запрос, и, возможно, с содержательной частью (телом) сообщения.
Ответ сервера содержит:
 строку состояния, в которую входит версия протокола и код возврата (успех или ошибка);
 сообщение, в которое входит информация сервера, метаинформация (т.е. информация о
содержании сообщения) и тело сообщения.
В протоколе не указывается, кто должен открывать и закрывать соединение между клиентом
и сервером. На практике, как правило, соединение открывает клиент, а сервер после отправки
ответа инициирует его разрыв.
Сервер WWW (web-сервер, HTTP-сервер)
Рис. 1. Взаимодействие клиента и сервера по протоколу HTTP
Web-сервером может быть любой компьютер, подключенный к Интернету, на котором
установлено специальное программное обеспечение. Наиболее популярными реализациями web-
серверов являются: сервер Apache группы Apache, Internet Information Server (IIS) компании
Microsoft, SunOne фирмы Sun Microsystems, WebLogic фирмы BEA Systems, IAS (Inprise
Application Server) фирмы Borland, WebSphere фирмы IBM, OAS (Oracle Application Server).
6
Браузер отправляет серверу запросы, созданные в соответствии с протоколом HTTP. В
процессе выполнения задания сервер может связываться с другими серверами.
Стандарт CGI
Термин CGI (Common Gateway Interface, интерфейс общего шлюза) обозначает набор правил
и соглашений, которые должны соблюдаться web-серверами при выполнении ими различных web-
приложений.
Cтандарт CGI предназначен для создания серверных приложений, работающих по протоколу
HTTP. Такие приложения (их называют шлюзами или CGI-программами) запускаются сервером в
режиме реального времени. Сервер передает запросы пользователя CGI-программе, которая их
обрабатывает и возвращает результат своей работы на экран пользователя. Таким образом,
пользователь получает динамическую информацию, которая может изменяться в результате
влияния различных факторов. Сам шлюз (скрипт CGI) может быть написан на различных языках
программирования – Cи/C++, Fortran, Perl, TCL, UNIX Shell, Visual Basic, Python и др. таким
образом, CGI - стандарт для обмена данными между сервером и прикладной программой, которая
запускается из-под сервера.
Фактически, до недавнего времени все web-программирование представляло собой
программирование CGI-приложений. В последнее время ситуация изменилась. И хотя CGI все еще
остается негласным стандартом для Web-приложений, механизм работы CGI-программ несколько
обновился. На смену CGI технологии пришли серверные интерпретаторы.
Приложения на сервере можно использовать для создания счетчиков, форумов, чатов,
обработки статистики, организации доступа к базам данных и т.д.
Рис. 2. Архитектура современного WWW сервера
На выходе с сервера всегда HTML, но сгенерированный приложением
Характеристика системы РНР
PHP является основным конкурентом CGI. Сейчас CGI-приложения для Web постепенно
вытесняются PHP. Почему? PHP - серверный язык сценариев, предназначенный именно для web-
программирования: в нем уже решены типичные задачи разбора строки параметров, извлечения
заголовков HTTP, получения значений переменных окружения, работы с СУБД и т.п.
РНР представляет собой мощный язык написания сценариев для Web, который продолжает
развиваться, начиная с версии РНР 3, выпущенной в 1997 году. С точки зрения разработчиков РНР
поддерживает большой диапазон Internet-технологий, что делает его на сегодняшний день
ведущим языком сценариев для Web.
Язык РНР был создан в 1994 году Расмусом Лердорфом (Rasmus Lerdorf), чтобы отслеживать
информацию о пользователях, просматривавших его домашнюю страничку с резюме. Вначале
аббревиатура РНР расшифровывалась как Personal Home Page (личная домашняя страничка). Со
7
временем функциональность РНР значительно расширилась, и профессионалы начали
использовать этот язык для создания сложных сайтов.
РНР стали расшифровывать как «гипертекстовый препроцессор» (РНР: Hypertext
Preprocessor), что означает, что данные в этом языке обрабатываются до того, как становятся
HTML-страницей. Официальный сайт РНР - www.php.net.
Препроцессор - программа, работающая совместно с web-сервером, которая просматривает
все или некоторые файлы, выдаваемые web-сервером посетителям, и выполняет над ними
определенные действия в зависимости от содержащихся в этих файлах инструкций.
Преимущества PHP
В отличие от Perl, VBScript и Java язык РНР был разработан специально для создания
динамических Web-страниц. Динамические Web-страницы позволяют решать более широкий круг
задач по сравнению со статическими. В серверном коде под динамическим информационным
наполнением, подразумевается содержимое страницы, сборка которого происходит оперативно,
сразу после поступления запроса на передачу страницы.
Язык РНР может взаимодействовать с базами данных и файлами, обрабатывать электронную
почту и выполнять многие другие операции.
Платформа для Web-приложений
Поскольку РНР является серверным языком написания сценариев, то первое требование для
программирования - наличие доступа к серверу, позволяющему работать с РНР.
Другой вариант - установить РНР на свой собственный компьютер (обычно это компьютер,
который работает под управлением операционных систем Windows NT или Linux), на котором
также должен быть установлен Web-сервер. Можно использовать доступный Apache для
операционных систем Unix и NT. РНР можно бесплатно загрузить с сайта www.php.net.
Второе требование для работы с РНР - наличие на вашем компьютере любого текстового
редактора (например, программ NotePad, WordPad).
В-третьих, нужен способ передачи сценариев с вашего компьютера на сервер. Если вы
работаете на собственном сервере, то просто сохраняете файлы в определенном каталоге. В
противном случае потребуется FTP-клиент (File Transfer Protocol) для пересылки файлов на
сервер.
Контрольные вопросы:
1. Какова схема HTTP-сеанса?
2. Что такое интерфейс CGI?
3. В чем особенность серверных web-приложений?
4. Каковы преимущества языка PHP?
Лекция 2: “СИНТАКСИС И ДАННЫЕ В PHP”
План лекции:
Структура документа PHP. Операторы PHP. Вывод данных.
Переменные и константы.
Массивы. Функции для работы с массивами.
Глобальные массивы.
Строки в PHP. Функции для работы со строками.
Конспект лекции
Структура документа PHP
PHP является встраиваемым языком - это означает, что можно перемещаться между чистым
кодом HTML и PHP. Чтобы встроить код PHP в HTML, используются начальный <?php и
конечный ?> теги PHP.
<?php
8
Блок кода PHP
?>
Блоки сценария могут размещаться в любом месте документа HTML.
<html > <head> <title>Страница Web </title> </head> <body>
<p>
<?php echo "Это документ PHP";?>
</p>
<p>
<?php print "PHP – это серверный язык программирования!";?>
</p>
</body> </html>
Пример показанного выше кода включает теги HTML, теги PHP, операторы PHP и
разделители. Когда пользователь запрашивает страницу PHP, сервер обрабатывает весь код PHP.
Когда страница PHP просматривается в окне браузера, выводится только текст между
открывающим и закрывающим тегами HTML или PHP. Никакой реальный код PHP не виден при
просмотре исходного кода в окне браузера. Причина в том, что интерпретатор PHP выполняет
сценарий на сервере и заменяет код результатом вывода работы сценария. Только этот вывод
передается браузеру. Это одна из характеристик, которая делает PHP серверным языком
сценариев, в отличие от JavaScript, языка сценариев клиента.
Каждая строка кода PHP должна завершаться точкой с запятой (;).
Комментарии в PHP можно определить одним из следующих способов:
// — простой комментарий PHP;
# — альтернативный простой комментарий PHP;
/*...*/ — многострочные блоки комментариев.
Операторы PHP
Операторы применяются для выполнения операций или действий с переменными. Чтобы
переопределить порядок выполнения операций и явно управлять порядком вычисления выражения
используют скобки ( ).
Типы операторов в PHP:
арифметические операторы; операторы присваивания; логические операторы; операторы
сравнения.
Арифметические операторы
Оператор Описание
+ сложение
- вычитание
* умножение
/ деление
% возвращает остаток от деления
++ увеличивает значение
-- уменьшает значение
Операторы присваивания
= Переменной слева присваивается вычисленное справа значение
+= Складывает значение слева со значением справа и присваивает
результат переменной слева
-= Вычитает значение справа из значения слева и присваивает
результат переменной слева
*= Умножает значение справа на значения слева и присваивает
результат переменной слева
/= Делит значение слева на значение справа и присваивает результат
9
переменной слева
%= Делит значение слева на значение справа и присваивает остаток (по
модулю) переменной слева
.= Значение слева соединяется (операция конкатенации) со значением
справа, и результат присваивается переменной слева
Операторы сравнения
== равно
!= не равно
> больше
< меньше
>= больше или равно
<= меньше или равно
Логические операторы
&& AND (И)
|| OR (ИЛИ)
! NOT (НЕ)
Вывод данных
PHP содержит два основных оператора для вывода данных в окне браузера Web: echo и print.
Оператор echo используется для вывода одной или нескольких строк, print - для вывода строки.
Оператор print может принимать только один параметр и возвращает значение 1 или 0, которое
позволяет узнать, успешно (1) ли выполнен оператор print.
echo "Это будет напечатано в окне браузера ";
echo " Это будет напечатано", " в окне браузера ";
По умолчанию операторы echo и print не создают автоматические переносы строк, поэтому
необходимо использовать тег <p> или <br> для создания параграфов или переносов строк.
Разделители, создаваемые в редакторе HTML с помощью возврата каретки, пробелов и табуляции,
игнорируются процессором PHP.
В PHP теги HTML можно применять в операторах print и echo для форматирования вывода. В
этих случаях вывод необходимо заключать в двойные кавычки (""), чтобы гарантировать, что
браузер не интерпретирует тег буквально и не выводит его как часть строки вывода.
// тег параграфа HTML включается в оператор PHP echo
echo "<p>Это пример параграфа 1</p>";
echo "<p> Это пример параграфа 2</p>";
Переменные и константы
В PHP имеется два основных типа переменных: скалярные и массивы. Скалярные
переменные содержат только одно значение в данный момент времени, а переменные массивы —
список значений.
Скалярные переменные PHP содержат значения следующих типов.
Целые – целые числа или числа без десятичной точки (1, 999, 325812841).
Числа с плавающей точкой – числа, содержащие десятичную точку (1.11, 2.5, .36).
Строки – текстовая или числовая информация. Строковые данные всегда определяются с
помощью кавычек ("Hello!!! World", "278-3819").
Булевы значения – используются для значений true (истина) или false (ложь).
Имена переменных PHP всех типов начинаются со знака "$". Имена переменных могут
содержать только латинские буквы, числа, и символ подчеркивания “_”; но не могут начинаться с
цифры. Имена переменных в РНР чувствительны к регистру, в отличие от ключевых слов.
Следующие переменные $myvar и $MYVAR в PHP интерпретируются как две различные
переменные.
Допустимые имена переменных: $myvar, $F_Name, $address1, $my_string_variable
Недопустимые имена переменных: Myvar, $1stvar, $&62##
Присваивание значений переменным осуществляется с помощью операции присваивания
“=”.
10
// присвоение значений переменным
$string_var = "Сервер"; $integer_var = 1000; $float_var = 8.35;
//Вывод значений переменных
echo $string_var; echo $integer_var; echo $float_var;
Переменную можно соединять с другими переменными или тегами HTML с помощью
оператора точки (.). Оператор точки можно использовать также для соединения строк и
переменных. Чтобы создать возврат каретки или перенос строки, можно присоединить тег HTML
<br/> в конце каждой переменной.
<?php
// вывод каждого значения в отдельной строке
$string_var = "Моя PHP программа!"<br/>";
$integer_var = 700 . "<br/>";
$float_var = 9.75;
echo $string_var; echo $integer_var;
echo $float_var;
$fname = "Tim";
$lname = "Stiv";
echo "Имя пользователя: " . $fname . " " . $lname;
?>
Результат:
PHP поддерживает также процесс, называемый интерполяцией – замену переменной в строке
ее содержимым. Вместо соединения переменных и литералов, их можно объединять внутри
двойных кавычек (""). Интерполяция является свойством только двойных кавычек. Переменные и
литералы нельзя объединить внутри одиночных кавычек. При использовании двойных кавычек
значение переменной выводится вместе с литералом. Следующий пример иллюстрирует свойство
интерполяции PHP.
<?php
/* переменные объединяются с помощью литеральной строки,
заключенной в двойные кавычки. */
$fname = "Tim"; $lname = "Stiv";
echo " Имя пользователя: $fname $lname";
?>
Константы
При объявлении константы используется функция define(). Строковые данные всегда
заключаются в кавычки ("Hello World", "178-3528").
Имена констант PHP в отличие от переменных не начинаются со знака "$", записываются в
верхнем регистре. Имена констант могут содержать буквы, цифры и символ подчеркивания (_); но
не могут начинаться с цифры.
/* объявляются значения трех констант:
define("STRING_CONSTANT", "Это строка текста.");
define("NUMERIC_CONSTANT", 5);
// Вывод содержимого констант в окне браузера.
echo STRING_CONST;
echo INTEGER_CONST
11
Массивы
Система PHP поддерживает массивы с числовыми индексами и ассоциативные массивы.
Переменные массивов состоят из двух частей – индекса и элемента. Индекс массива, иногда
называемый ключом массива, является значением, применяемым для идентификации или доступа
к элементам массива. Индекс массива помещается в квадратные скобки. Большинство массивов
используют числовые индексы, которые обычно начинаются с 0 или 1. В PHP ассоциативные
массивы могут использовать строковые индексы. Оба типа массивов создаются с помощью
конструкции array().
Пример массива с числовыми индексами:
$my_array = array('red', 'green', 'blue') ;
Этот код создает массив с числовым индексом с именем $my_array. Массиву присваивается
три элемента — red, green, и blue. Каждый элемент идентифицируется числовым индексом.
$my_array[0] = 'red' // индекс 0 соответствует элементу red
$my_array[1] = 'green' // индекс 1 соответствует элементу green
$my_array[2] = 'blue' // индекс 2 соответствует элементу blue
Чтобы получить доступ к содержимому массива, используется имя массива и индекс.
Следующий код применяется для вывода значений массива $my_array.
<?php
$my_array = array('red', 'green', 'blue');
echo "Первое значение массива — " . $my_array[0];
echo "Второе значение массива — " . $my_array[1];
echo "Третье значение массива — " . $my_array[2];
?>
Результат:
Первое значение массива — red
Второе значение массива — green
Третье значение массива — blue
Ассоциативные массивы позволяют использовать значения индекса. Для массивов с
числовыми индексами значения индекса создаются автоматически, начиная с 0. Ассоциативные
массивы допускают применение числовых и строковых значений индекса. Символ между
индексом и значениями (=>) является знаком равенства, за которым сразу следует символ больше.
$members = array('FName' => Tim, 'LName' => Batyr, 'Age' => 20);
В этом примере члены массива содержат три элемента, однако используются строковые
индексы — FName, LName и Age.
//индекс FName соответствует элементу Tim
$members['FName'] = 'Tim' ;
// индекс LName соответствует элементу Batyr
$members['LName'] = ' Batyr ' ;
// индекс Age соответствует элементу 20
$members['Age'] = '20'
Для доступа к содержимому массива используется имя массива и индекс. Следующий код
применяется для вывода значений переменной $members.
<?php
$members = array('FName' => Tim, 'LName' => Batyr, 'Age' => 20);
echo "Имя пользователя " . $members['FName'];
echo "Фамилия пользователя " . $members['LName'];
echo "Возраст пользователя " . $members['Age'];
?>
Результат:
Имя пользователя Tim
Фамилия пользователя Batyr
Возраст пользователя 20
12
Функции для работы с массивами
Кроме функции array() система PHP включает множество других функций для работы с
массивами. Некоторые наиболее часто используемые функции.
count() - для подсчета числа элементов.
sort() - для сортировки элементов существующего массива.
shuffle() - для случайного перемешивания элементов в заданном массиве.
sizeof() является синонимом (алиасом) функции count().
array_slice($array_name,offset, length) - для извлечения части существующего массива.
$array_name является именем исходного массива, offset указывает позицию, где будет
начинаться разрез, length указывает число элементов, которое будет вырезано из массива.
array_merge($array_name, $array_name) - для объединения или слияния двух или
большего количества существующих массивов. Имена массивов разделяются запятыми.
Глобальные массивы
PHP включает ряд предопределенных глобальных массивов. Их называют также
суперглобальными переменными, так как они всегда присутствуют и доступны для всех блоков
сценария PHP. Cуперглобальные переменные PHP:
$_GET[]; $_POST[]; $_REQUEST[]; $_COOKIE[]; $_FILES[]; $_SERVER[]
$_ENV[]; $_SESSION[]
Строки в PHP
Строки являются последовательностями символов. В PHP символ соответствует байту, т.е.
существует точно 256 возможных различных символов. В PHP не существует практического
ограничения на размер строк, поэтому вообще нет причин беспокоиться об их длине. Строковые
значения могут использоваться буквально или присваиваться переменным.
В PHP строковый литерал можно представлять тремя способами.
1) строки в одиночных кавычках
2) строки в двойных кавычках
3) строки в синтаксисе heredoc - многострочные строковые переменные.
Одиночные кавычки предоставляют самый простой метод для работы со строками. При
использовании этого метода строки заключаются в одиночные кавычки (''). Если одиночные
кавычки требуются как часть строки, они должны быть экранированы символом обратной косой
черты (""). Хотя одиночные кавычки предоставляют простой способ работы со строками,
одиночные кавычки не поддерживают применение интерполяции. Примеры ниже иллюстрируют
использование одиночных кавычек.
<?php
// Выводит литеральную строку в одиночных кавычках в окне браузера.
echo 'PHP был разработан в1994 ';
// использование экранирующего символа.
echo ' Массив содержит значения '2,5,3,4'.';
$name = ' Bill ';
echo ' Имя пользователя $name'; //неправильное использование одиночных кавычек
?>
Строки в двойных кавычках
Строки PHP можно выводить также с помощью двойных кавычек (""). Если строки PHP
помещаются в двойные кавычки, то можно применять интерполяцию – замена переменной в
строке ее содержимым. Для строк в двойных кавычках PHP поддерживает также больше
экранированных символов. Эти символы представлены в таблице ниже.
Символ Описание
n перенос строки
r возврат каретки
t горизонтальная табуляция
 обратная косая черта
13
<?php
// Вывод строки в двойных кавычках с помощью оператора echo
echo " Операционные системы Windows и Linux поддерживают PHP. <br>";
$name = "Tim";
// Создается строка с включенной переменной.
echo "Имя пользователя $name. <br>"; // интерполяция
// Расширяется переменная массива и выводится вместе со строкой.
$fruits = array('яблоко', 'персик', 'абрикос');
echo "Мой любимый фрукт $fruits[0].";
?>
Результат:
Операционные системы Windows и Linux поддерживают PHP.
Имя пользователя Tim.
Мой любимый фрукт яблоко.
Функции для работы со строками
Система PHP содержит ряд функций для работы со строками.
strlen(string) – определяет длину строки string.
ltrim(string) – удаляет символы-разделители в начале строки string.
rtrim(string) – удаляет символы-разделители в конце строки string.
strpbrk(string, char) – ищет в строке string символ char. Возвращает false или строку,
начинающуюся с найденного символа.
strtoupper(string) – преобразует строку в верхний регистр.
strtolower(string) – преобразует строку в нижний регистр.
strrev(string) – возвращает строку string в обратном порядке.
Следующий блок кода демонстрирует, как использовать строковые функции PHP.
<?php
$string1 = "Привет, user"; /
$string2 = "Добро пожаловать в PHP";
echo strlen($string); // длина строки
echo strtoupper($another_string); //преобразование строки в верхний регистр
echo strrev($string2); // изменение порядка символов
echo strpbrk($string1, "u"); // поиск символа "u"
?>
В PHP можно обратиться к произвольному символу строки по его номеру при помощи
фигурных скобок.
$fs=$string1{0}; //Первый символ строки текста
Переменные окружения
Некоторые переменные окружения, которые можно использовать в программе как
обыкновенные переменные. Например, оператор echo $REMOTE_ADDR выводит IP-адрес
клиента.
Переменная Описание
HTTP_USER_AGENT
С помощью этой переменой можно определить браузер
пользователя, а также его операционную систему.
HTTP_HOST Содержит доменное имя сервера, на котором запущен сценарий.
SERVER_PORT
Порт сервера, к которому обратился браузер. Обычно используется
порт 80.
REMOTE_ADDR
Содержит IP-адрес клиента, то есть IP-адрес пользователя, который
запустил браузер
REMOTE_PORT
Порт для получения ответа сервера. Этот порт закрепляется за
каждой запущенной копией браузера
$ знак доллара
" двойная кавычка
14
Контрольные вопросы:
1. Какова структура документа PHP?
2. Как вывести в PHP данные в окно браузера?
3. Что такое ассоциативные массивы?
4. Что такое глобальные массивы?
5. Как можно вывести строки?
Лекция 3: “УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ ЯЗЫКА PHP И ФУНКЦИИ”
План лекции:
Условные операторы (if, switch).
Операторы цикла (while, for, foreach).
Операторы включения: include, require.
Конспект лекции
Условные операторы
1) Оператор if
if (выражение) блок_выполнения
Здесь выражение - любое правильное PHP-выражение (т.е. все, что имеет значение). В
процессе обработки скрипта выражение преобразуется к логическому типу. Если в результате
преобразования значение выражения истинно (True), то выполняется блок_выполнения, в
противном случае блок_выполнения игнорируется. Если блок_выполнения содержит несколько
команд, то он должен быть заключен в фигурные скобки { }.
Правила преобразования выражения к логическому типу:
в FALSE преобразуются следующие значения:
- логическое False;
- целый ноль (0);
- действительный ноль (0.0);
- пустая строка и строка "0";
- массив без элементов;
- объект без переменных;
- специальный тип NULL.
Все остальные значения преобразуются в TRUE.
2) Оператор if … else
Оператор else позволяет выполнить какие-либо действия, если проверяемое в if выражение
является неверным.
if (выражение) блок_выполнения
else блок_выполнения_1
Если условие выполнено (т.е. выражение=true), то выполняются действия из
блока_выполнения, иначе – действия из блока_выполнения1.
Пример 1. Использование операций сравнения в операторе if …else
<?php
$age = 18;
if ($age < 18) { echo "Вы еще не можете голосовать!<ВR>"; }
else echo "Поздравляем! Уже можете голосовать!!!<BR>";
?>
3) Оператор elseif
15
Оператор elseif позволяет проверить несколько условий последовательно.
if (условие)
блок_выполнения
elseif(выражение1) блок_выполнения_1
...
else блок_выполнения_N
Elseif-утверждение будет выполнено, только если предшествующее if-условие является False,
все предшествующие elseif-условия являются False, а данное elseif-условие – True.
4) Оператор switch
switch (выражение или переменная)
{
case значение_1:
блок_действий_1
break;
case значение 2:
блок_действий_2
break;
...
default:
блок_действий_по_умолчанию
}
Значение выражения сравнивается со значениями, перечисленными после ключевых слов
case (значение 1, значение 2 и т.д.). Если значение выражения совпало с каким-то вариантом, то
выполняется соответствующий блок_действий – от двоеточия после совпавшего значения до
конца switch или до первого оператора break, если таковой найдется. Если значение выражения не
совпало ни с одним из вариантов, то выполняются действия по умолчанию
(блок_действий_по_умолчанию), находящиеся после ключевого слова default. Выражение в switch
вычисляется только один раз.
Пример 2. Использование оператора switch
<?php $score = 5;
switch ($score) {
case 5: echo "Отлично"; break;
case 4: echo "Хорошо"; break;
case 3: echo "Удовлетворительно"; break;
default: echo "Оценка за заданными пределами"; break; }
?>
Операторы цикла
В PHP существует несколько конструкций, позволяющих выполнять повторяющиеся
действия в зависимости от условия. Это циклы while, do..while, foreach и for.
1) Структура while.
while (выражение) { блок_выполнения }
либо
while (выражение): блок_выполнения endwhile;
Цикл while позволяет повторять выполнение команд блока_выполнения до тех пор, пока
значение выражения является истинным (TRUE). Значение выражения проверяется каждый раз в
начале цикла, так что даже если его значение изменилось в процессе выполнения
блока_выполнения, все тело цикла (команды блока_выполнения) будет выполнено до конца.
2) Структура do... while:
do {блок_выполнения}
while (выражение);
16
В цикле do..while истинность выражения проверяется в конце цикла. Благодаря этому
блок_выполнения цикла do...while гарантированно выполняется хотя бы один раз.
3) Структура цикла for:
for (выражение_1; выражение_2; выражение_3) {блок_выполнения}
либо
for (выражение_1; выражение_2; выражение_3): блок_выполнения endfor;
В начале цикла только один раз вычисляется выражение выражение_1. Затем в начале
каждой итерации вычисляется значение условия цикла – выражение_2. До тех пор пока
выражение_2 истинно (TRUE), выполняется тело цикла - блок_выполнения. В конце каждой
итерации вычисляется выражение3. Как только условие цикла станет ложным (FALSE),
выполнение цикла прекратится.
Каждое из выражений 1, 2, 3 может быть пустым. Если выражение2 является пустым, то это
значит, что цикл должен выполняться неопределенное время (в этом случае PHP считает это
выражение всегда истинным). Цикл можно останавливать, используя оператор break.
Операторы передачи управления break и continue
Если требуется немедленно завершить работу цикла или отдельной его итерации, то
используют операторы break и continue. Оператор break заканчивает выполнение текущего цикла.
Оператор continue позволяет пропустить дальнейшие инструкции из блока_выполнения любого
цикла и продолжить выполнение с нового круга.
4) Оператор foreach
Эта конструкция предназначена исключительно для работы с массивами.
foreach ($array as $value)
{блок_выполнения}
либо
foreach ($array as $key => $value)
{блок_выполнения}
В первом случае формируется цикл по всем элементам массива, заданного переменной
$array. На каждом шаге цикла значение текущего элемента массива записывается в переменную
$value, и внутренний счетчик массива передвигается на единицу. Внутри блока_выполнения
значение текущего элемента массива может быть получено с помощью переменной $value.
Выполнение блока_выполнения происходит столько раз, сколько элементов в массиве $array.
Вторая форма записи на каждом шаге цикла записывает ключ текущего элемента массива в
переменную $key, которую можно использовать в блоке_выполнения.
Когда foreach начинает исполнение, внутренний указатель массива автоматически
устанавливается на первый элемент.
Пример 3. Использование оператора foreach
<?php
$names = array("Иван","Петр","Семен");
foreach ($names as $val)
{ echo "Привет, $val <br>"; // выводим всем приветствие
}
foreach ($names as $k => $val) {
// кроме приветствия, выведем номера в списке, т.е. ключи
echo "Привет, $val ! Ты в списке под номером $k <br>"; }
?>
Альтернативный синтаксис
PHP предлагает альтернативный синтаксис для некоторых управляющих структур: if, while,
for, foreach и switch. В каждом случае открывающую скобку нужно заменить на двоеточие (:), а
закрывающую – на endif;, endwhile; и т.д. соответственно.
Например, синтаксис оператора if можно записать:
if(выражение): блок_выполнения endif;
17
Если условие, записанное в круглых скобках оператора if, оказалось истиной, будет
выполняться весь код, от двоеточия «:» до команды endif;. Использование такого синтаксиса
полезно при встраивании php в html-код.
Пример 4. Использование альтернативного синтаксиса
<?php
$names = array("Иван","Петр","Алекс");
if($names[0]=="Иван"): echo "Привет, Ваня!"; endif;
?>
Для конструкции switch, как и для if, возможен альтернативный синтаксис, где
открывающая switch фигурная скобка заменяется двоеточием, а закрывающая – endswitch;
соответственно.
Операторы включения: include и require
Оператор include позволяет включать код, содержащийся в указанном файле, и выполнять
его столько раз, сколько программа встречает этот оператор. Включение может производиться
любым из перечисленных способов:
1) include 'имя_файла';
2) include $file_name;
3) include ("имя_файла");
Пусть в файле params.inc хранится набор каких-то параметров и функций. Каждый раз, когда
нужно будет использовать эти параметры (функции), следует вставлять в текст основной
программы команду include 'params.inc'.
Пример 5. Использование оператора включения include
Файл params.inc
<?php
$user = "Дик"; $today = date("d.m.y");
/* функция date() возвращает дату в формате день.месяц.год) */
?>
Файл include.php
<?php
include ("params.inc");
/* переменные $user и $today заданы в файле params.inc.
Здесь мы тоже можем ими пользоваться благодаря команде include("params.inc") */
echo "Привет, $user!<br>"; echo "Сегодня $today";
// выведет, например, "Сегодня 7.12.09"
?>
Создание функции
Функция представляет собой набор операторов, который идентифицируется определенным
именем. Код внутри функции выполняет определенную задачу. Использование функций в
программировании значительно облегчает процесс отладки.
Для объявления функции используется следующий синтаксис:
function имя_функции ([$аргумент1[, $аргумент2, ... $аргументN]]])
{
Тело функции - PHP-код.
[return "значение, возвращаемое функцией";]
}
Определение функции начинается с ключевого слова function, за которым следует имя
функции, после имени – список аргументов в скобках. Тело функции заключается в фигурные
скобки. Имя_функции и имена аргументов функции должны соответствовать правилам
наименования переменных в PHP. Имена функций нечувствительны к регистру.
Оператор return используется для возврата значения из функции. Оператор return может
возвращать и массивы. Функция может не иметь параметров, как и возвращаемого значения.
18
Синтаксис вызова функции:
имя_функции ("значение_для_аргумента1", "значение_для_аргумента2",...);
Пример объявления и вызова функции s_info(), которой передаются три значения:
<?php
// определение функции s_info
function s_info($first, $last, $message)
{
// функция выводит результат в браузер
echo "<br>$message<br>";
echo "Имя: ". $first . " ". $last . "<br>";
}
// вызов функции s_info
s_info("Алия","Бахытова", "Всем привет!");
?>
Аргументы функций
Каждый аргумент представляет собой переменную или константу. С помощью аргументов
данные в функцию можно передать: по значению (используется по умолчанию) или по ссылке.
Обычно передача аргумента функции осуществляется по значению. Это означает, что в функцию
передается копия данных, а не сами данные. Если аргумент функции изменяется внутри тела
функции, это не оказывает влияния на значения переменных за ее пределами.
Для того чтобы переменные, переданные функции, сохраняли свое значение при выходе из
нее, применяется передача параметров по ссылке. Для этого перед именем переменной
необходимо поместить амперсанд (&).
Пример передачи аргумента по значению.
<?
function get_summa($var)
{
$var = $var + 1000;
return $var;
}
$new_var = 30;
echo(get_summa($new_var)); // выводит 1030
echo("<br>$new_var"); // выводит 30
?>
Пример передачи аргумента по ссылке.
Если аргумент передается по ссылке, при любом изменении значения параметра происходит
изменение переменной-аргумента:
<?
function get_summa(&$var) // аргумент передается по ссылке
{
$var = $var + 1000;
return $var;
}
$new_var = 30;
echo(get_summa($new_var)); // выводит 1030
echo("<br>$new_var"); // выводит 1030
?>
Область действия переменных. Функции ограничивают область действия переменных. При
использовании функций все переменные, создаваемые в ее теле, являются по умолчанию
локальными и не доступны вне функции. Это означает, что одни и те же имена переменных
могут быть использованы внутри различных функций, и это не приведет к возникновению
19
ошибок. Чтобы получить доступ к глобальным переменным, необходимо использовать их явное
описание при помощи оператора global.
Контрольные вопросы:
1. Как работают управляющие операторы условия if и switch?
2. Как работают операторы цикла for, while, foreach?
3. Назначение операторов включения include и require.
4. Как создать и вызвать собственную функцию?
5. Как работает передача аргумента по значению и по ссылке?
Лекция 4: “ПЕРЕДАЧА ПАРАМЕТРОВ СЦЕНАРИЯМ
С ПОМОЩЬЮ WEB-ФОРМ”
План лекции:
Создание HTML-формы для передачи данных на сервер.
Способы передачи данных сценарию-обработчику.
Конспект лекции
Создание HTML-формы для передачи данных на сервер
Обработка HTML-форм является очень важным свойством PHP. Данные, записанные в
форму, отправляются для обработки скрипту PHP на сервере.
Для создания формы в языке HTML используется контейнерный тег FORM, в которм
задаются управляющие элементы - поля ввода, кнопки, переключатели, списки и т.п. После того
как пользователь ввел необходимые данные в соответствующие поля, они могут быть обработаны
соответствующим скриптом и сформирован ответ в виде HTML-страницы.
С помощью атрибутов action и method тега FORM задаются имя программы, которая будет
обрабатывать данные формы, и метод запроса, соответственно. Команда INPUT определяет тип и
различные характеристики запрашиваемой информации. Отправка данных формы происходит
после нажатия кнопки типа submit.
Таблица 1. Элементы управления HTML
Элемент
управления Тег Описание
Текстовое поле <INPUT
TYPE=TEXT>
Поле, предназначенное для ввода
однострочного текста или других данных.
Многострочный
текст
<TEXTAREA> Поле, предназначенное для ввода нескольких
строчек текста.
Выключатель
(checkbox)
<INPUT
TYPE=CHECKBOX
>
Выключатель, для ввода логических
переменных.
Переключатель
(radio button)
<INPUT
TYPE=RADIO>
Переключатель, предназначенный для выбора
одного из нескольких вариантов.
Кнопка (button) <BUTTON> Кнопка с произвольным внешним видом.
Кнопка-
изображение
(image map)
<INPUT
TYPE=IMAGE>
Графическое изображение, на котором
выделены области различной формы
(прямоугольники, овалы, многоугольники) для
гиперссылок на другие страницы.
Отправка <INPUT
TYPE=SUBMIT>
Кнопка, предназначенная для завершения
ввода данных и отправки их на web-сервер.
20
Пароль <INPUT
TYPE=PASSWOR
D>
Текстовое поле для ввода пароля. При вводе
символы пароля не отображаются на экране,
заменяясь звездочками.
Сброс <INPUT
TYPE=RESET>
Кнопка, предназначенная для очистки всех
полей формы.
Скрытое поле <INPUT
TYPE=HIDDEN>
Предназначен для хранения текста, который
не виден, но экране, но доступен при
обработке формы.
Список <SELECT>,
<OPTION>,
<OPTGROUP>
Многострочный список, предназначенный
для выбора одного или нескольких элементов.
Файл <INPUT
TYPE=FILE>
Файл для загрузки на сервер.
Атрибуты тега <FORM>:
 ACTION - задает URL скрипта, который будет обрабатывать данные, введенные в форме.
Если атрибут не задан, то по умолчанию обработчиком будет назначен текущий скрипт
или документ.
 METHOD - определяет способ передачи данных (GET или POST) скрипту-обработчику.
Если используется метод GET (по умолчанию), то все поля, описанные в форме, передаются
в строке URL в следующем виде: URL? name=value&name=value.
При использовании метода POST поля формы кодируются таким же образом, но передаются
через скрытые переменные, не используя строку URL. Метод POST обычно используется при
передаче большого объема данных или если необходимо скрыть от пользователя передаваемый
набор полей.
Строка <FORM METHOD="POST" ACTION="http://localhost/phpreader.php">
означает, что данные обрабатываются в скрипте phpreader.php.
Строка <INPUT TYPE ="SUBMIT" VALUE="Отправить"> </FORM>
означает, что все данные будут переданы в скрипт phpreader.php с помощью специального типа
кнопки TYPE ="SUBMIT"
TARGET. Задает имя фрейма, в котором будут отображен результат выполнения обработчика
формы.
Способы передачи данных сценарию
После того как форма отправлена Web-серверу, если ее атрибут ACTION представляет собой
PHP-сценарий, этот сценарий запускается и принимает данные, которые были отправлены. Как эти
данные становятся доступными в PHP-коде?
Существует множество методов извлечения данных. В зависимости от того, какой метод
используется для отправки данных формы и передачи их РНР-сценарию (GET или POST), в РНР
определены два суперглобальных массива, называемые, соответственно, $_GET и $_POST,
которые могут использоваться для сохранения данных. Это ассоциативные массивы, содержащие
список ключей (представляющих имена элементов формы, указанные в атрибутах NAME) и
ассоциированных с ними значений. Например, значение переменной $_GET ['UserName'] будет
содержать значение элемента HTML-формы, атрибут NAME которого равен UserName. Элемент
HTML-формы:
<INPUT TYPE="text" NAME="UserName" VALUE="Tim">
Код РНР:
<?php
echo $_GET['UserName']; // значение $_GET['UserName']=Tim
?>
В результате отправки данных формы в окне браузера будет выведено:
Tim
21
Термин суперглобальный означает, что переменные $_GET и $_POST будут всегда доступны
без необходимости использования оператора global для включения их в текущий контекст. При
использовании массива $_GET предполагается, что форма отправляется методом GET. Если же
это делается методом POST, данные будут сохранены в массиве $_POST. Для обеспечения
независимости от способа передачи данных рекомендуется использовать суперглобальный массив
$_REQUEST, который комбинирует $_GET, $_POST, $_COOKIE и $_FILES.
Пример web-формы:
Контрольные вопросы:
1. Как работают методы GET и POST?
2. Как осуществляется доступ к данным, введенным в форму?
3. Как создать скрытые от пользователя данные?
4. Как ввести секретные данные?
Лекция 5: “ИСПОЛЬЗОВАНИЕ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ”
План лекции:
Базовый синтаксис регулярных выражений.
Функции PHP для работы с регулярными выражениями.
Конспект лекции
Регулярные выражения представляют мини-язык описаний для поиска в строках
информации по заданному шаблону. С помощью регулярных выражений можно найти в строке
подстроку, удовлетворяющую заданному шаблону и извлечь ее, проверить существует ли заданная
строка и т.д.
Базовый синтаксис регулярных выражений
Простейшее регулярное выражение можно записать так:
"abc" – это выражение соответствует любой строке, которая содержит подстроку "abc".
Квадратные скобки ограничивают поиск теми символами, которые в них заключены:
"[abc]" - этому регулярному выражению соответствует любая строка, содержащая abc либо
вместе, либо каждый из них в отдельности.
Групповой символ. При создании регулярных выражений часто удобно пользоваться
групповым символом точки ".", который объединяет два одиночных символа, за исключением
символа n.
Ветви. В регулярном выражении может быть несколько ветвей, которые разделяются
символом |, действующим как оператор OR (ИЛИ). Т. е., если в выражении используются ветви, то
для соответствия регулярного выражения какой-либо строке, достаточно, чтобы только одна из
ветвей соответствовала этой строке:
"abc|абв" - этому регулярному выражению соответствует любая строка, содержащая
подстроки "abc" или "абв". Ветвление удобно применять при проверке расширений и имен файлов,
зон доменных имен и т. д. К примеру, следующее регулярное выражение проверяет, содержатся ли
в строке подстроки "ru", "com" или "net": «ru|com|net»
Исключающее выражение. Для исключения последовательности символов из поиска перед
этой ней ставится символ "^":
22
"[^а-я]" - это регулярное выражение отвечает любому символу, не содержащемуся в
диапазоне, а-я. Обратите внимание, что символ ^ находится внутри квадратных скобок, так как
только в этом случае он имеет значение "не". При использовании символа ^ вне квадратных
скобок, он имеет совсем иное значение.
Квалификаторы. Регулярное выражение можно уточнить при помощи квалификаторов - так
называются символы +, ?, *. Квалификаторы указывают, сколько раз последовательность
символов может встретиться в строке и указываются непосредственно после той части выражения,
к которой они применяются:
 "a+" - хотя бы один, а (строки "абв" и "абва" соответствуют этому выражению, а строка
"укр" - нет);
 Границы. Границы - это числа в фигурных скобках, указывающие количество вхождений
в строку фрагмента выражения, непосредственно предшествующего границе:
 "xy{2}" соответствует строке, в которой за x следует два y;
 "xy{2,}" соответствует строке, в которой за x следует не менее двух y (может быть и
больше);
 "xy{2,6}" соответствует строке, в которой за x следует от двух до шести y;
Для указания количества вхождений не одного символа, а их последовательности,
используются круглые скобки:
 "x(yz){2,6}" соответствует строке, в которой за x следует от двух до шести
последовательностей yz;
 "x(yz)*" соответствует строке, в которой за x следует ноль и более последовательностей yz;
Соответствие началу и концу строки. В регулярном выражении можно указать, должно ли
конкретное подвыражение встречаться в начале, в конце строки или и в начале и в конце строки.
Символ ^ соответствует началу строки:
"^xz" - это выражение соответствует любой строке, начинающейся с xz. Обратите внимание,
что в этом случае символ ^ ставится за пределами выражения в скобках, к примеру: "^[a-z]"
Знак доллара $ соответствует концу строки:
"xz$" – это регулярное выражение соответствует любой строке, заканчивающейся на xz.
Сопоставление со специальными символами. В тех случаях, когда нужно сопоставить
выражение строке, в которой встречаются спецсимволы, такие как $, ^, { и т. д., перед ними
ставится символ обратной косой черты ().
Например, для того, чтобы найти в строке символ $, в регулярном выражении нужно
написать "$". То же самое относится и к самому символу обратной косой черты. Если нужно
провести сопоставление с символом обратной косой черты, то в этом случае ставится две
обратных косых черты, т. е. .
Функции PHP для работы с регулярными выражениями
PHP поддерживает два вида записи регулярных выражений: POSIX и Perl. POSIX
расшифровывается как Portable Operating System Interface (интерфейс переносной операционной
системы) и является стандартом для интерфейсов приложений. Рассмотрим работу с регулярными
выражениями в стиле POSIX.
Функция ereg()
bool ereg(string pattern, string string [, array regs])
Данная функция ищет в строке string соответствие регулярному выражению, заданному в
шаблоне pattern. Если соответствия подвыражений с шаблоном будут найдены, то они
сохраняются в массиве соответствий regs. При этом $regs[0] содержит копию строки string,
$regs[1] содержит подстроку, начинающуюся с первой левой скобки, $regs[2] хранит подстроку,
начинающуюся со второй левой скобки и т.д.
Ниже приведен код, преобразующий дату из формата YYYY-MM-DD в формат
DD.MM.YYYY.
<?
$date = "2009-10-27";
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs))
{ echo "$regs[3].$regs[2].$regs[1]"; }
23
else
{ echo "Неверный формат даты: $date"; }
?>
Результат:
Функция ereg_replace()
string ereg_replace(string pattern, string replacement, string string)
Эта функция заменяет найденный в строке string шаблон pattern на строку replacement и, если
соответствие найдено, возвращает модифицированную строку. Синтаксис функции таков, что
число обязательно должно быть записано как строка.
<?
$number = "1989";
$str = "Он родился в восемьдесят девятом.";
echo("До замены: $str");
$str = ereg_replace("восемьдесят девятом", $number, $str);
echo("<br> После замены: $str");
?>
Результат:
Функция eregi() идентична функции ereg, за исключением того, что она игнорирует регистр.
Функция eregi_replace() аналогична функции ereg_replace, за исключением того, что она является
нечувствительной к регистру.
Функция split()
array split (string pattern, string string [, int limit])
Эта функция возвращает массив строк, которые представляют собой подстроки строки string,
образованные в результате разделения строки string на подстроки в соответствии с регулярным
выражением pattern. Если указан необязательный параметр limit, то в возвращаемом массиве будет
не больше limit элементов, последний из которых содержит неразделенную часть строки.
Эта функция полезна при разделении дат, доменных имен и т.д.
Пример с доменным именем:
<?
$url = "www.softtime.ru"; $array = split(".", $url);
foreach($array as $index => $val)
{ echo("$index -> $val <br />"); }
?>
Результат:
Пример с датой.
<?
24
$date = "10-12-2009";
$array = split ("-", $date);
foreach($array as $index => $val)
{ echo("$index -> $val <br />"); }
?>
Результат: 0 -> 10
1 -> 12
2 -> 2009
Функция spliti() аналогична функции split(), но является нечувствительной к регистру.
Контрольные вопросы:
1. Для чего создают и используют регулярные выражения?
2. Назначение квалификаторов: +, ?, *
3. Как найти в строке специальные символы?
4. Охарактеризуйте функции для работы с регулярными выражениями.
Лекция 6: “РАБОТА С ФАЙЛАМИ В PHP”
План лекции:
Основные команды для работы с файлами.
Запись в файл и чтение из файла.
Загрузка файлов на web-сервер.
Обработка загруженного файла.
Конспект лекции
В РНР предусмотрен полный набор функций для работы с файлами. Кроме того, РНР
предоставляет в распоряжение программиста средства просмотра и модификации серверной
информации, а также запуска внешних программ. Обработка файлов позволяет реализовать
различные прикладные задачи, от создания гостевой книги до ведения простого инвентарного
списка и др.
Основные команды для работы с файлами.
Проверка существования и определение размера файла
Прежде чем пытаться работать с файлом, необходимо убедиться в том, что он существует.
Для решения этой задачи обычно используются две функции: file_exists( ) и is_file( ).
1. Функция file_exists() проверяет, существует ли заданный файл. Если файл существует,
функция возвращает TRUE, в противном случае - FALSE.
Синтаксис функции file_exists( ):
bool file_exists(string файл)
Пример проверки существования файла:
if (!file_exists ($filename)) :
print "File $filename does not exist!"; endif:
2. Функция is_file() проверяет не только существование заданного файла и возможность
выполнения с ним операций чтения/записи.
bool is_file(string файл)
Следующий пример показывает, как убедиться в существовании файла и возможности
выполнения операций с ним:
$file = "somefile.txt";
if (is_file($file)) : print "The file $file is valid and exists!";
else :
print "The file $file does not exist or it is not a valid file!";
endif;
25
Убедившись в том, что нужный файл существует и с ним можно выполнять различные
операции чтения/записи, можно переходить к следующему шагу — открытию файла.
3. Функция filesize( ) возвращает размер (в байтах) файла с заданным именем или FALSE в
случае ошибки. Синтаксис функции filesize( ):
int filesize(string имя_файла)
Предположим, вы хотите определить размер файла pastry.txt. Для получения нужной
информации можно воспользоваться функцией filesize( ):
$fs = filesize("pastry.txt"); print "pastry.txt is $fs bytes.";
4. Функция feof() возвращает значение TRUE при достижении конца файла.
Прежде чем выполнять операции с файлом, необходимо открыть его и связать с файловым
манипулятором, а после завершения работы с файлом его следует закрыть.
Открытие файла: fopen()
Функция fopen(string filename, string mode[, int use_include_path [,
resource zcontext]])
Здесь filename — имя открываемого файла, mode - режим открытия файла (для чтения
или записи), параметр use_include_path может быть установлен в значение 1 или TRUE для
поиска файла по каталогам, указанным в параметре include_path конфигурационного файла
php.ini. Необязательный параметр zcontext задает контекст файла, который предназначен для
дополнительной обработки потоков данных в файл и из файла (в данной книге контексты не
рассматриваются).
Параметр mode, определяющий режим открытия и возможные операции с файлом,
может принимать следующие значения:
r Файл открывается только для чтения.
r+ Файл открывается для чтения и записи.
w Файл открывается только для записи. Если файл существует, он усекается до
нулевой длины. Если файл не существует, он создается.
w+ Файл открывается для чтения и записи. Если файл существует, он усекается до
нулевой длины. Если файл не существует, он создается.
a Файл открывается только для записи, указатель файла устанавливается на конец
файла. Если файл не существует, он создается.
a+ Файл открывается для чтения и записи, указатель файла устанавливается на конец
файла. Если файл не существует, он создается.
x Файл создается и открывается для записи. Если файл уже существует, функция
fopen возвращает значение FALSE, свидетельствующее об ошибке.
x+ Файл создается и открывается для чтения и записи. Если файл уже существует,
функция fopen возвращает значение FALSE, свидетельствующее об ошибке.
В следующем примере файл /home/ file.txt открывается для чтения:
$handle = fopen("/home/file.txt", " r " ) ;
При успешном открытии файла функция fopen() возвращает дескриптор файла, который
используется для дальнейшей работы с файлом. После открытия файла данные могут быть,
например, считаны при помощи функции fread, которая описана несколько ниже.
Следующая строка открывает текстовый файл для записи:
$handle = fopen ("/home/file.txt", " w t " ) ;
To же самое для двоичного режима работы:
$handle = fopen ("/home/file, txt", "wb");
При работе под Windows следует экранировать все обратные слэши, как показано ниже
(или использовать прямые слеши):
$handle = fopen ("с:datafile.txt", " r " ) ;
При работе с файлами можно не ограничиваться локальной файловой системой. Например,
можно открыть файл, находящийся на web-сервере, указав его URL:
$handle = fopen("http://www.orioner.ru/index.html","r");
Для работы также доступен и FTP-протокол с заданием имени пользователя и пароля:
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр
Лекции и задания по рнр

More Related Content

What's hot

Automate MariaDB Galera clusters deployments with Ansible
Automate MariaDB Galera clusters deployments with AnsibleAutomate MariaDB Galera clusters deployments with Ansible
Automate MariaDB Galera clusters deployments with AnsibleFederico Razzoli
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleWagner Bianchi
 
MongoDB Journaling and the Storage Enginer
MongoDB Journaling and the Storage EnginerMongoDB Journaling and the Storage Enginer
MongoDB Journaling and the Storage EnginerMongoDB
 
RedisConf18 - Redis Data Structures for Non Redis People
RedisConf18 - Redis Data Structures for Non Redis PeopleRedisConf18 - Redis Data Structures for Non Redis People
RedisConf18 - Redis Data Structures for Non Redis PeopleRedis Labs
 
JSON improvements in MySQL 8.0
JSON improvements in MySQL 8.0JSON improvements in MySQL 8.0
JSON improvements in MySQL 8.0Mydbops
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바NeoClova
 
Big data: NoSQL comme solution
Big data: NoSQL comme solutionBig data: NoSQL comme solution
Big data: NoSQL comme solutionJEMLI Fathi
 
Intro to MySQL Master Slave Replication
Intro to MySQL Master Slave ReplicationIntro to MySQL Master Slave Replication
Intro to MySQL Master Slave Replicationsatejsahu
 
Cassandra at eBay - Cassandra Summit 2012
Cassandra at eBay - Cassandra Summit 2012Cassandra at eBay - Cassandra Summit 2012
Cassandra at eBay - Cassandra Summit 2012Jay Patel
 
Distributed Transaction in Microservice
Distributed Transaction in MicroserviceDistributed Transaction in Microservice
Distributed Transaction in MicroserviceNghia Minh
 
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorDeploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorZabbix BR
 
Getting started with Ansible
Getting started with AnsibleGetting started with Ansible
Getting started with AnsibleIvan Serdyuk
 
Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture IT Expert Club
 
IBM Spectrum Scale Authentication for File Access - Deep Dive
IBM Spectrum Scale Authentication for File Access - Deep DiveIBM Spectrum Scale Authentication for File Access - Deep Dive
IBM Spectrum Scale Authentication for File Access - Deep DiveShradha Nayak Thakare
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentationSuresh Kumar
 

What's hot (20)

Automate MariaDB Galera clusters deployments with Ansible
Automate MariaDB Galera clusters deployments with AnsibleAutomate MariaDB Galera clusters deployments with Ansible
Automate MariaDB Galera clusters deployments with Ansible
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
 
MongoDB Journaling and the Storage Enginer
MongoDB Journaling and the Storage EnginerMongoDB Journaling and the Storage Enginer
MongoDB Journaling and the Storage Enginer
 
RedisConf18 - Redis Data Structures for Non Redis People
RedisConf18 - Redis Data Structures for Non Redis PeopleRedisConf18 - Redis Data Structures for Non Redis People
RedisConf18 - Redis Data Structures for Non Redis People
 
JSON improvements in MySQL 8.0
JSON improvements in MySQL 8.0JSON improvements in MySQL 8.0
JSON improvements in MySQL 8.0
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
 
Big data: NoSQL comme solution
Big data: NoSQL comme solutionBig data: NoSQL comme solution
Big data: NoSQL comme solution
 
Intro to MySQL Master Slave Replication
Intro to MySQL Master Slave ReplicationIntro to MySQL Master Slave Replication
Intro to MySQL Master Slave Replication
 
Ansible - Introduction
Ansible - IntroductionAnsible - Introduction
Ansible - Introduction
 
Cassandra at eBay - Cassandra Summit 2012
Cassandra at eBay - Cassandra Summit 2012Cassandra at eBay - Cassandra Summit 2012
Cassandra at eBay - Cassandra Summit 2012
 
Distributed Transaction in Microservice
Distributed Transaction in MicroserviceDistributed Transaction in Microservice
Distributed Transaction in Microservice
 
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorDeploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
 
Ansible 101
Ansible 101Ansible 101
Ansible 101
 
Key-Value NoSQL Database
Key-Value NoSQL DatabaseKey-Value NoSQL Database
Key-Value NoSQL Database
 
Getting started with Ansible
Getting started with AnsibleGetting started with Ansible
Getting started with Ansible
 
Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture
 
ansible why ?
ansible why ?ansible why ?
ansible why ?
 
IBM Spectrum Scale Authentication for File Access - Deep Dive
IBM Spectrum Scale Authentication for File Access - Deep DiveIBM Spectrum Scale Authentication for File Access - Deep Dive
IBM Spectrum Scale Authentication for File Access - Deep Dive
 
Bizweb Microservices Architecture
Bizweb Microservices ArchitectureBizweb Microservices Architecture
Bizweb Microservices Architecture
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 

Similar to Лекции и задания по рнр

Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
Middleware
MiddlewareMiddleware
Middlewaremegakott
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиковMedia Gorod
 
Hivext – облачная платформа для быстрой разработки интернет приложений
Hivext – облачная платформа для быстрой разработки  интернет приложений Hivext – облачная платформа для быстрой разработки  интернет приложений
Hivext – облачная платформа для быстрой разработки интернет приложений guest800050
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программированиеRauan Ibraikhan
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.Igor Shkulipa
 
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"DataArt
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"Fwdays
 
Мировые информационные ресурсы. Лекция 2
Мировые информационные ресурсы. Лекция 2Мировые информационные ресурсы. Лекция 2
Мировые информационные ресурсы. Лекция 2Dmitriy Krukov
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.Igor Shkulipa
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NETMedia Gorod
 
Краткий обзор основных технологий разработки Web приложений
Краткий обзор основных технологий разработки Web приложенийКраткий обзор основных технологий разработки Web приложений
Краткий обзор основных технологий разработки Web приложенийTatsiana Ramanchik
 
История развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другиеИстория развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другиеlugnsk
 
Alfresco как система для СЭД
Alfresco как система для СЭДAlfresco как система для СЭД
Alfresco как система для СЭДSergey Gorobets
 

Similar to Лекции и задания по рнр (20)

Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Middleware
MiddlewareMiddleware
Middleware
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
 
Hivext 04.2010
Hivext 04.2010Hivext 04.2010
Hivext 04.2010
 
Hivext – облачная платформа для быстрой разработки интернет приложений
Hivext – облачная платформа для быстрой разработки  интернет приложений Hivext – облачная платформа для быстрой разработки  интернет приложений
Hivext – облачная платформа для быстрой разработки интернет приложений
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программирование
 
Present.pps
Present.ppsPresent.pps
Present.pps
 
Present.pps
Present.ppsPresent.pps
Present.pps
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
 
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
 
paper BPM on Rails4
paper BPM on Rails4paper BPM on Rails4
paper BPM on Rails4
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Мировые информационные ресурсы. Лекция 2
Мировые информационные ресурсы. Лекция 2Мировые информационные ресурсы. Лекция 2
Мировые информационные ресурсы. Лекция 2
 
Artsofte for b2 b
Artsofte for b2 b Artsofte for b2 b
Artsofte for b2 b
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Краткий обзор основных технологий разработки Web приложений
Краткий обзор основных технологий разработки Web приложенийКраткий обзор основных технологий разработки Web приложений
Краткий обзор основных технологий разработки Web приложений
 
История развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другиеИстория развития и применения CMS: Drupal и другие
История развития и применения CMS: Drupal и другие
 
Alfresco как система для СЭД
Alfresco как система для СЭДAlfresco как система для СЭД
Alfresco как система для СЭД
 

More from Rauan Ibraikhan

Портфолио Асильбеков К.Т.
Портфолио Асильбеков К.Т.Портфолио Асильбеков К.Т.
Портфолио Асильбеков К.Т.Rauan Ibraikhan
 
Тәрбие жоспары
Тәрбие жоспарыТәрбие жоспары
Тәрбие жоспарыRauan Ibraikhan
 
Топ жетекшісінің міндеттері
Топ жетекшісінің міндеттеріТоп жетекшісінің міндеттері
Топ жетекшісінің міндеттеріRauan Ibraikhan
 
Ата аналарға арналған сауалнама
Ата  аналарға арналған сауалнама  Ата  аналарға арналған сауалнама
Ата аналарға арналған сауалнама Rauan Ibraikhan
 
Ата аналармен жұмыс
Ата аналармен жұмысАта аналармен жұмыс
Ата аналармен жұмысRauan Ibraikhan
 
Сіз қандай ата анасыз сауалнама
Сіз қандай ата анасыз сауалнамаСіз қандай ата анасыз сауалнама
Сіз қандай ата анасыз сауалнамаRauan Ibraikhan
 
Топ мәдениеті туралы
Топ мәдениеті туралыТоп мәдениеті туралы
Топ мәдениеті туралыRauan Ibraikhan
 
П4В тобы туралы мәлімет
П4В тобы туралы мәліметП4В тобы туралы мәлімет
П4В тобы туралы мәліметRauan Ibraikhan
 
Мастер класс Teamviewer шығару
Мастер класс   Teamviewer шығаруМастер класс   Teamviewer шығару
Мастер класс Teamviewer шығаруRauan Ibraikhan
 
Лабораторные практические работы
Лабораторные практические работыЛабораторные практические работы
Лабораторные практические работыRauan Ibraikhan
 
Сборник практических задании по Php
Сборник практических задании по PhpСборник практических задании по Php
Сборник практических задании по PhpRauan Ibraikhan
 
Методичка Prezi шығару
Методичка Prezi шығаруМетодичка Prezi шығару
Методичка Prezi шығаруRauan Ibraikhan
 
Наурыз тәрби сағ
Наурыз тәрби сағНаурыз тәрби сағ
Наурыз тәрби сағRauan Ibraikhan
 
Бакытты отбасы
Бакытты отбасыБакытты отбасы
Бакытты отбасыRauan Ibraikhan
 
Ұятты қыз, намысты ұл болу –өнеге
Ұятты қыз, намысты ұл болу –өнегеҰятты қыз, намысты ұл болу –өнеге
Ұятты қыз, намысты ұл болу –өнегеRauan Ibraikhan
 
Мәдениетке деген құндылықты қарам қатынасты орнату
Мәдениетке деген құндылықты қарам қатынасты орнатуМәдениетке деген құндылықты қарам қатынасты орнату
Мәдениетке деген құндылықты қарам қатынасты орнатуRauan Ibraikhan
 
Ұстаз ұлы есім
Ұстаз ұлы есімҰстаз ұлы есім
Ұстаз ұлы есімRauan Ibraikhan
 
Өз отанының патриоты болу
Өз отанының патриоты болу Өз отанының патриоты болу
Өз отанының патриоты болу Rauan Ibraikhan
 

More from Rauan Ibraikhan (20)

Портфолио Асильбеков К.Т.
Портфолио Асильбеков К.Т.Портфолио Асильбеков К.Т.
Портфолио Асильбеков К.Т.
 
Тәрбие жоспары
Тәрбие жоспарыТәрбие жоспары
Тәрбие жоспары
 
Топ жетекшісінің міндеттері
Топ жетекшісінің міндеттеріТоп жетекшісінің міндеттері
Топ жетекшісінің міндеттері
 
Ата аналарға арналған сауалнама
Ата  аналарға арналған сауалнама  Ата  аналарға арналған сауалнама
Ата аналарға арналған сауалнама
 
Ата аналармен жұмыс
Ата аналармен жұмысАта аналармен жұмыс
Ата аналармен жұмыс
 
Сіз қандай ата анасыз сауалнама
Сіз қандай ата анасыз сауалнамаСіз қандай ата анасыз сауалнама
Сіз қандай ата анасыз сауалнама
 
Топ мәдениеті туралы
Топ мәдениеті туралыТоп мәдениеті туралы
Топ мәдениеті туралы
 
Анкета
АнкетаАнкета
Анкета
 
П4В тобы туралы мәлімет
П4В тобы туралы мәліметП4В тобы туралы мәлімет
П4В тобы туралы мәлімет
 
Мастер класс Teamviewer шығару
Мастер класс   Teamviewer шығаруМастер класс   Teamviewer шығару
Мастер класс Teamviewer шығару
 
Лабораторные практические работы
Лабораторные практические работыЛабораторные практические работы
Лабораторные практические работы
 
Сборник практических задании по Php
Сборник практических задании по PhpСборник практических задании по Php
Сборник практических задании по Php
 
Методичка Prezi шығару
Методичка Prezi шығаруМетодичка Prezi шығару
Методичка Prezi шығару
 
Оқу құралы
Оқу құралыОқу құралы
Оқу құралы
 
Наурыз тәрби сағ
Наурыз тәрби сағНаурыз тәрби сағ
Наурыз тәрби сағ
 
Бакытты отбасы
Бакытты отбасыБакытты отбасы
Бакытты отбасы
 
Ұятты қыз, намысты ұл болу –өнеге
Ұятты қыз, намысты ұл болу –өнегеҰятты қыз, намысты ұл болу –өнеге
Ұятты қыз, намысты ұл болу –өнеге
 
Мәдениетке деген құндылықты қарам қатынасты орнату
Мәдениетке деген құндылықты қарам қатынасты орнатуМәдениетке деген құндылықты қарам қатынасты орнату
Мәдениетке деген құндылықты қарам қатынасты орнату
 
Ұстаз ұлы есім
Ұстаз ұлы есімҰстаз ұлы есім
Ұстаз ұлы есім
 
Өз отанының патриоты болу
Өз отанының патриоты болу Өз отанының патриоты болу
Өз отанының патриоты болу
 

Лекции и задания по рнр

  • 2. 2 Рецензент: Абдуллина А. М. – преподаватель спецдисциплин высшей категории Алматинского Государственного Политехнического Колледжа. Учебное пособие. «WEB ПРОГРАММИРОВАНИЕ» – Алматы, 2015 – 75 с. Данное пособие является сборником теоретических и практических материалов по дисциплине «Web программирование» для специальности 1305000 «Информационные системы». Пособие содержит материалы, посвященные изучению основ языка программирования PHP, который в настоящее время является одним из наиболее популярных для реализации WEB приложений, рассмотрению круга вопросов, сгруппированных по назначению прикладных аспектов применения языка PHP и его функциональных возможностей. Сборник предназначен для преподавателей и студентов колледжа.
  • 3. 3 Содержание Основы языка PHP 4 1 Введение в серверные сценарии для Web 4 2 Синтаксис и данные в PHP 6 3 Управляющие конструкции языка PHP и функции 13 4 Передача параметров сценариям с помощью web-форм 18 5 Использование регулярных выражений 20 6 Работа с файлами в РНР 23 Разработка web-приложений в PHP 27 7 Базы данных и основные конструкции языка SQL 27 8 Взаимодействие PHP с сервером баз данных MySQL 28 9 Обработка исключений и ошибок в PHP 30 10 Сервисы web-сайта. Создание графики в PHP 32 11 Безопасность web-приложений 35 12 Сеансы, cookie и сетевые функции в PHP 38 13 Основы объектно-ориентированного программирования в PHP 41 14 Взаимодействие PHP и XML 43 15 Инструментальные средства и практические аспекты разработки web-сайтов 45 16 Лабораторные работы 47 17 Тестовые задания для самоконтроля 69 18 Глоссарий 72 19 Перечень использованной литературы 74
  • 4. 4 Введение Под современными технологиями программирования сегодня понимают в основном, Интернет-технологии, включающие в себя концептуальные знания WWW и HTML, Java, клиентских и серверных скриптов и языков запросов к базам данных, основы web-дизайна. Однако наиболее важной частью профессиональной подготовки специалиста является умение работать над большим проектом, быть в “команде” и доводить проект от замысла до реализации. В силу специфичности производства ПО (практически нулевая стоимость тиражирования, очень быстрый процесс устаревания и т. д.) технология его создания очень сильно завязана на человеческий ресурс и поэтому должна включать в себя организационный и управленческий аспекты. На сегодняшний день в мире существует огромное количество различных процессов для создания ПО. Тем не менее, именно технологий, рассматривающих полный жизненный цикл проекта разработки ПО, сочетающих в себе научный подход, серьезную базу исследований и имеющих историю реального использования и адаптации, относительно немного. Нас интересует разработка того, что мы будем называть промышленными программными продуктами. Они применяются для решения самых разных задач, таких, например, как системы с обратной связью, которые управляют или сами управляются событиями физического мира и для которых ресурсы времени и памяти ограничены; задачи поддержания целостности информации объемом в сотни тысяч записей при параллельном доступе к ней с обновлениями и запросами; системы управления и контроля за реальными процессами (например, диспетчеризация воздушного или железнодорожного транспорта). Системы подобного типа обычно имеют большое время жизни, и большое количество пользователей оказывается в зависимости от их нормального функционирования. В мире промышленных программ мы также встречаем среды разработки, которые упрощают создание приложений в конкретных областях, и программы, которые имитируют определенные стороны человеческого интеллекта. Существенная черта промышленной программы - уровень сложности: один разработчик практически не в состоянии охватить все аспекты такой системы. Грубо говоря, сложность промышленных программ превышает возможности человеческого интеллекта. Увы, но сложность, о которой мы говорим, по-видимому, присуща всем большим программных системам. Говоря "присуща", мы имеем в виду, что эта сложность здесь неизбежна: с ней можно справиться, но избавиться от нее нельзя. В последние годы прошлого века появился и очень быстро завоевал огромную популярность новый класс приложений – так называемые Web-приложения. Обеспечивающие доступ через Интернет или интрасеть к информационным системам и базам данных, Web- приложения стали одним из наиболее эффективных инструментов современного бизнеса. Для разработки Web-серверов, являющихся Web-приложениями, широко используется язык разметки гипертекста HTML (HyperText Markup Language). Фактически, все страницы, которые видят посетители Web-сервера, составлены на языке HTML и содержат объекты различных типов (изображения, анимацию, формы для ввода информации и т.д.). Если Web-сервер содержит только статическую информацию, изменяющуюся эпизодически, ее можно представить в виде набора документов HTML. Для их создания подходить практически любой текстовый редактор (даже простейший Notepad), хотя лучше воспользоваться специальными средствами визуального проектирования страниц HTML, такими, как Microsoft FrontPage. Сам по себе язык HTML несложен, однако эта простота обманчива. В силу ограниченности его возможностей и ряда других обстоятельств приходится немало потрудиться, чтобы получить желаемый результат. Одна и та же страница может по-разному отображаться в различных браузерах, поэтому при проектировании Web-страниц вопросам совместимости с браузерами приходится уделять особое внимание. Чтобы ускорить загрузку страниц, необходимо минимизировать общий объем расположенных на них иллюстраций.
  • 5. 5 Раздел № 1 «ОСНОВЫ ЯЗЫКА PHP» Лекция 1: “ВВЕДЕНИЕ В СЕРВЕРНЫЕ СЦЕНАРИИ ДЛЯ WEB” План лекции: Служба WWW и схема HTTP-сеанса. Сервер WWW. Стандарт CGI. Характеристика системы PHP. Конспект лекции Служба WWW и схема HTTP-сеанса Интернет построен по многоуровневому принципу от физического уровня, связанного с физическими аспектами передачи двоичной информации, и до прикладного уровня, обеспечивающего интерфейс между пользователем и сетью. Базовым протоколом сети гипертекстовых ресурсов Web является протокол HTTP. HTTP (Hypertext Transfer Protocol) - протокол передачи гипертекста, протокол высокого уровня (уровня приложений) используется службой WWW для передачи Web-страниц. "Классическая" схема HTTP-сеанса:  установление TCP-соединения;  запрос клиента;  ответ сервера;  разрыв TCP-соединения. HTTP предоставляет набор методов для указания целей запроса, отправляемого серверу. Протокол HTTP реализует принцип запрос/ответ. Запрашивающая программа–клиент инициирует взаимодействие с отвечающей программой–сервером и посылает запрос, содержащий:  метод доступа;  адрес URI;  версию протокола;  сообщение с информацией о типе передаваемых данных, информацией о клиенте, пославшем запрос, и, возможно, с содержательной частью (телом) сообщения. Ответ сервера содержит:  строку состояния, в которую входит версия протокола и код возврата (успех или ошибка);  сообщение, в которое входит информация сервера, метаинформация (т.е. информация о содержании сообщения) и тело сообщения. В протоколе не указывается, кто должен открывать и закрывать соединение между клиентом и сервером. На практике, как правило, соединение открывает клиент, а сервер после отправки ответа инициирует его разрыв. Сервер WWW (web-сервер, HTTP-сервер) Рис. 1. Взаимодействие клиента и сервера по протоколу HTTP Web-сервером может быть любой компьютер, подключенный к Интернету, на котором установлено специальное программное обеспечение. Наиболее популярными реализациями web- серверов являются: сервер Apache группы Apache, Internet Information Server (IIS) компании Microsoft, SunOne фирмы Sun Microsystems, WebLogic фирмы BEA Systems, IAS (Inprise Application Server) фирмы Borland, WebSphere фирмы IBM, OAS (Oracle Application Server).
  • 6. 6 Браузер отправляет серверу запросы, созданные в соответствии с протоколом HTTP. В процессе выполнения задания сервер может связываться с другими серверами. Стандарт CGI Термин CGI (Common Gateway Interface, интерфейс общего шлюза) обозначает набор правил и соглашений, которые должны соблюдаться web-серверами при выполнении ими различных web- приложений. Cтандарт CGI предназначен для создания серверных приложений, работающих по протоколу HTTP. Такие приложения (их называют шлюзами или CGI-программами) запускаются сервером в режиме реального времени. Сервер передает запросы пользователя CGI-программе, которая их обрабатывает и возвращает результат своей работы на экран пользователя. Таким образом, пользователь получает динамическую информацию, которая может изменяться в результате влияния различных факторов. Сам шлюз (скрипт CGI) может быть написан на различных языках программирования – Cи/C++, Fortran, Perl, TCL, UNIX Shell, Visual Basic, Python и др. таким образом, CGI - стандарт для обмена данными между сервером и прикладной программой, которая запускается из-под сервера. Фактически, до недавнего времени все web-программирование представляло собой программирование CGI-приложений. В последнее время ситуация изменилась. И хотя CGI все еще остается негласным стандартом для Web-приложений, механизм работы CGI-программ несколько обновился. На смену CGI технологии пришли серверные интерпретаторы. Приложения на сервере можно использовать для создания счетчиков, форумов, чатов, обработки статистики, организации доступа к базам данных и т.д. Рис. 2. Архитектура современного WWW сервера На выходе с сервера всегда HTML, но сгенерированный приложением Характеристика системы РНР PHP является основным конкурентом CGI. Сейчас CGI-приложения для Web постепенно вытесняются PHP. Почему? PHP - серверный язык сценариев, предназначенный именно для web- программирования: в нем уже решены типичные задачи разбора строки параметров, извлечения заголовков HTTP, получения значений переменных окружения, работы с СУБД и т.п. РНР представляет собой мощный язык написания сценариев для Web, который продолжает развиваться, начиная с версии РНР 3, выпущенной в 1997 году. С точки зрения разработчиков РНР поддерживает большой диапазон Internet-технологий, что делает его на сегодняшний день ведущим языком сценариев для Web. Язык РНР был создан в 1994 году Расмусом Лердорфом (Rasmus Lerdorf), чтобы отслеживать информацию о пользователях, просматривавших его домашнюю страничку с резюме. Вначале аббревиатура РНР расшифровывалась как Personal Home Page (личная домашняя страничка). Со
  • 7. 7 временем функциональность РНР значительно расширилась, и профессионалы начали использовать этот язык для создания сложных сайтов. РНР стали расшифровывать как «гипертекстовый препроцессор» (РНР: Hypertext Preprocessor), что означает, что данные в этом языке обрабатываются до того, как становятся HTML-страницей. Официальный сайт РНР - www.php.net. Препроцессор - программа, работающая совместно с web-сервером, которая просматривает все или некоторые файлы, выдаваемые web-сервером посетителям, и выполняет над ними определенные действия в зависимости от содержащихся в этих файлах инструкций. Преимущества PHP В отличие от Perl, VBScript и Java язык РНР был разработан специально для создания динамических Web-страниц. Динамические Web-страницы позволяют решать более широкий круг задач по сравнению со статическими. В серверном коде под динамическим информационным наполнением, подразумевается содержимое страницы, сборка которого происходит оперативно, сразу после поступления запроса на передачу страницы. Язык РНР может взаимодействовать с базами данных и файлами, обрабатывать электронную почту и выполнять многие другие операции. Платформа для Web-приложений Поскольку РНР является серверным языком написания сценариев, то первое требование для программирования - наличие доступа к серверу, позволяющему работать с РНР. Другой вариант - установить РНР на свой собственный компьютер (обычно это компьютер, который работает под управлением операционных систем Windows NT или Linux), на котором также должен быть установлен Web-сервер. Можно использовать доступный Apache для операционных систем Unix и NT. РНР можно бесплатно загрузить с сайта www.php.net. Второе требование для работы с РНР - наличие на вашем компьютере любого текстового редактора (например, программ NotePad, WordPad). В-третьих, нужен способ передачи сценариев с вашего компьютера на сервер. Если вы работаете на собственном сервере, то просто сохраняете файлы в определенном каталоге. В противном случае потребуется FTP-клиент (File Transfer Protocol) для пересылки файлов на сервер. Контрольные вопросы: 1. Какова схема HTTP-сеанса? 2. Что такое интерфейс CGI? 3. В чем особенность серверных web-приложений? 4. Каковы преимущества языка PHP? Лекция 2: “СИНТАКСИС И ДАННЫЕ В PHP” План лекции: Структура документа PHP. Операторы PHP. Вывод данных. Переменные и константы. Массивы. Функции для работы с массивами. Глобальные массивы. Строки в PHP. Функции для работы со строками. Конспект лекции Структура документа PHP PHP является встраиваемым языком - это означает, что можно перемещаться между чистым кодом HTML и PHP. Чтобы встроить код PHP в HTML, используются начальный <?php и конечный ?> теги PHP. <?php
  • 8. 8 Блок кода PHP ?> Блоки сценария могут размещаться в любом месте документа HTML. <html > <head> <title>Страница Web </title> </head> <body> <p> <?php echo "Это документ PHP";?> </p> <p> <?php print "PHP – это серверный язык программирования!";?> </p> </body> </html> Пример показанного выше кода включает теги HTML, теги PHP, операторы PHP и разделители. Когда пользователь запрашивает страницу PHP, сервер обрабатывает весь код PHP. Когда страница PHP просматривается в окне браузера, выводится только текст между открывающим и закрывающим тегами HTML или PHP. Никакой реальный код PHP не виден при просмотре исходного кода в окне браузера. Причина в том, что интерпретатор PHP выполняет сценарий на сервере и заменяет код результатом вывода работы сценария. Только этот вывод передается браузеру. Это одна из характеристик, которая делает PHP серверным языком сценариев, в отличие от JavaScript, языка сценариев клиента. Каждая строка кода PHP должна завершаться точкой с запятой (;). Комментарии в PHP можно определить одним из следующих способов: // — простой комментарий PHP; # — альтернативный простой комментарий PHP; /*...*/ — многострочные блоки комментариев. Операторы PHP Операторы применяются для выполнения операций или действий с переменными. Чтобы переопределить порядок выполнения операций и явно управлять порядком вычисления выражения используют скобки ( ). Типы операторов в PHP: арифметические операторы; операторы присваивания; логические операторы; операторы сравнения. Арифметические операторы Оператор Описание + сложение - вычитание * умножение / деление % возвращает остаток от деления ++ увеличивает значение -- уменьшает значение Операторы присваивания = Переменной слева присваивается вычисленное справа значение += Складывает значение слева со значением справа и присваивает результат переменной слева -= Вычитает значение справа из значения слева и присваивает результат переменной слева *= Умножает значение справа на значения слева и присваивает результат переменной слева /= Делит значение слева на значение справа и присваивает результат
  • 9. 9 переменной слева %= Делит значение слева на значение справа и присваивает остаток (по модулю) переменной слева .= Значение слева соединяется (операция конкатенации) со значением справа, и результат присваивается переменной слева Операторы сравнения == равно != не равно > больше < меньше >= больше или равно <= меньше или равно Логические операторы && AND (И) || OR (ИЛИ) ! NOT (НЕ) Вывод данных PHP содержит два основных оператора для вывода данных в окне браузера Web: echo и print. Оператор echo используется для вывода одной или нескольких строк, print - для вывода строки. Оператор print может принимать только один параметр и возвращает значение 1 или 0, которое позволяет узнать, успешно (1) ли выполнен оператор print. echo "Это будет напечатано в окне браузера "; echo " Это будет напечатано", " в окне браузера "; По умолчанию операторы echo и print не создают автоматические переносы строк, поэтому необходимо использовать тег <p> или <br> для создания параграфов или переносов строк. Разделители, создаваемые в редакторе HTML с помощью возврата каретки, пробелов и табуляции, игнорируются процессором PHP. В PHP теги HTML можно применять в операторах print и echo для форматирования вывода. В этих случаях вывод необходимо заключать в двойные кавычки (""), чтобы гарантировать, что браузер не интерпретирует тег буквально и не выводит его как часть строки вывода. // тег параграфа HTML включается в оператор PHP echo echo "<p>Это пример параграфа 1</p>"; echo "<p> Это пример параграфа 2</p>"; Переменные и константы В PHP имеется два основных типа переменных: скалярные и массивы. Скалярные переменные содержат только одно значение в данный момент времени, а переменные массивы — список значений. Скалярные переменные PHP содержат значения следующих типов. Целые – целые числа или числа без десятичной точки (1, 999, 325812841). Числа с плавающей точкой – числа, содержащие десятичную точку (1.11, 2.5, .36). Строки – текстовая или числовая информация. Строковые данные всегда определяются с помощью кавычек ("Hello!!! World", "278-3819"). Булевы значения – используются для значений true (истина) или false (ложь). Имена переменных PHP всех типов начинаются со знака "$". Имена переменных могут содержать только латинские буквы, числа, и символ подчеркивания “_”; но не могут начинаться с цифры. Имена переменных в РНР чувствительны к регистру, в отличие от ключевых слов. Следующие переменные $myvar и $MYVAR в PHP интерпретируются как две различные переменные. Допустимые имена переменных: $myvar, $F_Name, $address1, $my_string_variable Недопустимые имена переменных: Myvar, $1stvar, $&62## Присваивание значений переменным осуществляется с помощью операции присваивания “=”.
  • 10. 10 // присвоение значений переменным $string_var = "Сервер"; $integer_var = 1000; $float_var = 8.35; //Вывод значений переменных echo $string_var; echo $integer_var; echo $float_var; Переменную можно соединять с другими переменными или тегами HTML с помощью оператора точки (.). Оператор точки можно использовать также для соединения строк и переменных. Чтобы создать возврат каретки или перенос строки, можно присоединить тег HTML <br/> в конце каждой переменной. <?php // вывод каждого значения в отдельной строке $string_var = "Моя PHP программа!"<br/>"; $integer_var = 700 . "<br/>"; $float_var = 9.75; echo $string_var; echo $integer_var; echo $float_var; $fname = "Tim"; $lname = "Stiv"; echo "Имя пользователя: " . $fname . " " . $lname; ?> Результат: PHP поддерживает также процесс, называемый интерполяцией – замену переменной в строке ее содержимым. Вместо соединения переменных и литералов, их можно объединять внутри двойных кавычек (""). Интерполяция является свойством только двойных кавычек. Переменные и литералы нельзя объединить внутри одиночных кавычек. При использовании двойных кавычек значение переменной выводится вместе с литералом. Следующий пример иллюстрирует свойство интерполяции PHP. <?php /* переменные объединяются с помощью литеральной строки, заключенной в двойные кавычки. */ $fname = "Tim"; $lname = "Stiv"; echo " Имя пользователя: $fname $lname"; ?> Константы При объявлении константы используется функция define(). Строковые данные всегда заключаются в кавычки ("Hello World", "178-3528"). Имена констант PHP в отличие от переменных не начинаются со знака "$", записываются в верхнем регистре. Имена констант могут содержать буквы, цифры и символ подчеркивания (_); но не могут начинаться с цифры. /* объявляются значения трех констант: define("STRING_CONSTANT", "Это строка текста."); define("NUMERIC_CONSTANT", 5); // Вывод содержимого констант в окне браузера. echo STRING_CONST; echo INTEGER_CONST
  • 11. 11 Массивы Система PHP поддерживает массивы с числовыми индексами и ассоциативные массивы. Переменные массивов состоят из двух частей – индекса и элемента. Индекс массива, иногда называемый ключом массива, является значением, применяемым для идентификации или доступа к элементам массива. Индекс массива помещается в квадратные скобки. Большинство массивов используют числовые индексы, которые обычно начинаются с 0 или 1. В PHP ассоциативные массивы могут использовать строковые индексы. Оба типа массивов создаются с помощью конструкции array(). Пример массива с числовыми индексами: $my_array = array('red', 'green', 'blue') ; Этот код создает массив с числовым индексом с именем $my_array. Массиву присваивается три элемента — red, green, и blue. Каждый элемент идентифицируется числовым индексом. $my_array[0] = 'red' // индекс 0 соответствует элементу red $my_array[1] = 'green' // индекс 1 соответствует элементу green $my_array[2] = 'blue' // индекс 2 соответствует элементу blue Чтобы получить доступ к содержимому массива, используется имя массива и индекс. Следующий код применяется для вывода значений массива $my_array. <?php $my_array = array('red', 'green', 'blue'); echo "Первое значение массива — " . $my_array[0]; echo "Второе значение массива — " . $my_array[1]; echo "Третье значение массива — " . $my_array[2]; ?> Результат: Первое значение массива — red Второе значение массива — green Третье значение массива — blue Ассоциативные массивы позволяют использовать значения индекса. Для массивов с числовыми индексами значения индекса создаются автоматически, начиная с 0. Ассоциативные массивы допускают применение числовых и строковых значений индекса. Символ между индексом и значениями (=>) является знаком равенства, за которым сразу следует символ больше. $members = array('FName' => Tim, 'LName' => Batyr, 'Age' => 20); В этом примере члены массива содержат три элемента, однако используются строковые индексы — FName, LName и Age. //индекс FName соответствует элементу Tim $members['FName'] = 'Tim' ; // индекс LName соответствует элементу Batyr $members['LName'] = ' Batyr ' ; // индекс Age соответствует элементу 20 $members['Age'] = '20' Для доступа к содержимому массива используется имя массива и индекс. Следующий код применяется для вывода значений переменной $members. <?php $members = array('FName' => Tim, 'LName' => Batyr, 'Age' => 20); echo "Имя пользователя " . $members['FName']; echo "Фамилия пользователя " . $members['LName']; echo "Возраст пользователя " . $members['Age']; ?> Результат: Имя пользователя Tim Фамилия пользователя Batyr Возраст пользователя 20
  • 12. 12 Функции для работы с массивами Кроме функции array() система PHP включает множество других функций для работы с массивами. Некоторые наиболее часто используемые функции. count() - для подсчета числа элементов. sort() - для сортировки элементов существующего массива. shuffle() - для случайного перемешивания элементов в заданном массиве. sizeof() является синонимом (алиасом) функции count(). array_slice($array_name,offset, length) - для извлечения части существующего массива. $array_name является именем исходного массива, offset указывает позицию, где будет начинаться разрез, length указывает число элементов, которое будет вырезано из массива. array_merge($array_name, $array_name) - для объединения или слияния двух или большего количества существующих массивов. Имена массивов разделяются запятыми. Глобальные массивы PHP включает ряд предопределенных глобальных массивов. Их называют также суперглобальными переменными, так как они всегда присутствуют и доступны для всех блоков сценария PHP. Cуперглобальные переменные PHP: $_GET[]; $_POST[]; $_REQUEST[]; $_COOKIE[]; $_FILES[]; $_SERVER[] $_ENV[]; $_SESSION[] Строки в PHP Строки являются последовательностями символов. В PHP символ соответствует байту, т.е. существует точно 256 возможных различных символов. В PHP не существует практического ограничения на размер строк, поэтому вообще нет причин беспокоиться об их длине. Строковые значения могут использоваться буквально или присваиваться переменным. В PHP строковый литерал можно представлять тремя способами. 1) строки в одиночных кавычках 2) строки в двойных кавычках 3) строки в синтаксисе heredoc - многострочные строковые переменные. Одиночные кавычки предоставляют самый простой метод для работы со строками. При использовании этого метода строки заключаются в одиночные кавычки (''). Если одиночные кавычки требуются как часть строки, они должны быть экранированы символом обратной косой черты (""). Хотя одиночные кавычки предоставляют простой способ работы со строками, одиночные кавычки не поддерживают применение интерполяции. Примеры ниже иллюстрируют использование одиночных кавычек. <?php // Выводит литеральную строку в одиночных кавычках в окне браузера. echo 'PHP был разработан в1994 '; // использование экранирующего символа. echo ' Массив содержит значения '2,5,3,4'.'; $name = ' Bill '; echo ' Имя пользователя $name'; //неправильное использование одиночных кавычек ?> Строки в двойных кавычках Строки PHP можно выводить также с помощью двойных кавычек (""). Если строки PHP помещаются в двойные кавычки, то можно применять интерполяцию – замена переменной в строке ее содержимым. Для строк в двойных кавычках PHP поддерживает также больше экранированных символов. Эти символы представлены в таблице ниже. Символ Описание n перенос строки r возврат каретки t горизонтальная табуляция обратная косая черта
  • 13. 13 <?php // Вывод строки в двойных кавычках с помощью оператора echo echo " Операционные системы Windows и Linux поддерживают PHP. <br>"; $name = "Tim"; // Создается строка с включенной переменной. echo "Имя пользователя $name. <br>"; // интерполяция // Расширяется переменная массива и выводится вместе со строкой. $fruits = array('яблоко', 'персик', 'абрикос'); echo "Мой любимый фрукт $fruits[0]."; ?> Результат: Операционные системы Windows и Linux поддерживают PHP. Имя пользователя Tim. Мой любимый фрукт яблоко. Функции для работы со строками Система PHP содержит ряд функций для работы со строками. strlen(string) – определяет длину строки string. ltrim(string) – удаляет символы-разделители в начале строки string. rtrim(string) – удаляет символы-разделители в конце строки string. strpbrk(string, char) – ищет в строке string символ char. Возвращает false или строку, начинающуюся с найденного символа. strtoupper(string) – преобразует строку в верхний регистр. strtolower(string) – преобразует строку в нижний регистр. strrev(string) – возвращает строку string в обратном порядке. Следующий блок кода демонстрирует, как использовать строковые функции PHP. <?php $string1 = "Привет, user"; / $string2 = "Добро пожаловать в PHP"; echo strlen($string); // длина строки echo strtoupper($another_string); //преобразование строки в верхний регистр echo strrev($string2); // изменение порядка символов echo strpbrk($string1, "u"); // поиск символа "u" ?> В PHP можно обратиться к произвольному символу строки по его номеру при помощи фигурных скобок. $fs=$string1{0}; //Первый символ строки текста Переменные окружения Некоторые переменные окружения, которые можно использовать в программе как обыкновенные переменные. Например, оператор echo $REMOTE_ADDR выводит IP-адрес клиента. Переменная Описание HTTP_USER_AGENT С помощью этой переменой можно определить браузер пользователя, а также его операционную систему. HTTP_HOST Содержит доменное имя сервера, на котором запущен сценарий. SERVER_PORT Порт сервера, к которому обратился браузер. Обычно используется порт 80. REMOTE_ADDR Содержит IP-адрес клиента, то есть IP-адрес пользователя, который запустил браузер REMOTE_PORT Порт для получения ответа сервера. Этот порт закрепляется за каждой запущенной копией браузера $ знак доллара " двойная кавычка
  • 14. 14 Контрольные вопросы: 1. Какова структура документа PHP? 2. Как вывести в PHP данные в окно браузера? 3. Что такое ассоциативные массивы? 4. Что такое глобальные массивы? 5. Как можно вывести строки? Лекция 3: “УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ ЯЗЫКА PHP И ФУНКЦИИ” План лекции: Условные операторы (if, switch). Операторы цикла (while, for, foreach). Операторы включения: include, require. Конспект лекции Условные операторы 1) Оператор if if (выражение) блок_выполнения Здесь выражение - любое правильное PHP-выражение (т.е. все, что имеет значение). В процессе обработки скрипта выражение преобразуется к логическому типу. Если в результате преобразования значение выражения истинно (True), то выполняется блок_выполнения, в противном случае блок_выполнения игнорируется. Если блок_выполнения содержит несколько команд, то он должен быть заключен в фигурные скобки { }. Правила преобразования выражения к логическому типу: в FALSE преобразуются следующие значения: - логическое False; - целый ноль (0); - действительный ноль (0.0); - пустая строка и строка "0"; - массив без элементов; - объект без переменных; - специальный тип NULL. Все остальные значения преобразуются в TRUE. 2) Оператор if … else Оператор else позволяет выполнить какие-либо действия, если проверяемое в if выражение является неверным. if (выражение) блок_выполнения else блок_выполнения_1 Если условие выполнено (т.е. выражение=true), то выполняются действия из блока_выполнения, иначе – действия из блока_выполнения1. Пример 1. Использование операций сравнения в операторе if …else <?php $age = 18; if ($age < 18) { echo "Вы еще не можете голосовать!<ВR>"; } else echo "Поздравляем! Уже можете голосовать!!!<BR>"; ?> 3) Оператор elseif
  • 15. 15 Оператор elseif позволяет проверить несколько условий последовательно. if (условие) блок_выполнения elseif(выражение1) блок_выполнения_1 ... else блок_выполнения_N Elseif-утверждение будет выполнено, только если предшествующее if-условие является False, все предшествующие elseif-условия являются False, а данное elseif-условие – True. 4) Оператор switch switch (выражение или переменная) { case значение_1: блок_действий_1 break; case значение 2: блок_действий_2 break; ... default: блок_действий_по_умолчанию } Значение выражения сравнивается со значениями, перечисленными после ключевых слов case (значение 1, значение 2 и т.д.). Если значение выражения совпало с каким-то вариантом, то выполняется соответствующий блок_действий – от двоеточия после совпавшего значения до конца switch или до первого оператора break, если таковой найдется. Если значение выражения не совпало ни с одним из вариантов, то выполняются действия по умолчанию (блок_действий_по_умолчанию), находящиеся после ключевого слова default. Выражение в switch вычисляется только один раз. Пример 2. Использование оператора switch <?php $score = 5; switch ($score) { case 5: echo "Отлично"; break; case 4: echo "Хорошо"; break; case 3: echo "Удовлетворительно"; break; default: echo "Оценка за заданными пределами"; break; } ?> Операторы цикла В PHP существует несколько конструкций, позволяющих выполнять повторяющиеся действия в зависимости от условия. Это циклы while, do..while, foreach и for. 1) Структура while. while (выражение) { блок_выполнения } либо while (выражение): блок_выполнения endwhile; Цикл while позволяет повторять выполнение команд блока_выполнения до тех пор, пока значение выражения является истинным (TRUE). Значение выражения проверяется каждый раз в начале цикла, так что даже если его значение изменилось в процессе выполнения блока_выполнения, все тело цикла (команды блока_выполнения) будет выполнено до конца. 2) Структура do... while: do {блок_выполнения} while (выражение);
  • 16. 16 В цикле do..while истинность выражения проверяется в конце цикла. Благодаря этому блок_выполнения цикла do...while гарантированно выполняется хотя бы один раз. 3) Структура цикла for: for (выражение_1; выражение_2; выражение_3) {блок_выполнения} либо for (выражение_1; выражение_2; выражение_3): блок_выполнения endfor; В начале цикла только один раз вычисляется выражение выражение_1. Затем в начале каждой итерации вычисляется значение условия цикла – выражение_2. До тех пор пока выражение_2 истинно (TRUE), выполняется тело цикла - блок_выполнения. В конце каждой итерации вычисляется выражение3. Как только условие цикла станет ложным (FALSE), выполнение цикла прекратится. Каждое из выражений 1, 2, 3 может быть пустым. Если выражение2 является пустым, то это значит, что цикл должен выполняться неопределенное время (в этом случае PHP считает это выражение всегда истинным). Цикл можно останавливать, используя оператор break. Операторы передачи управления break и continue Если требуется немедленно завершить работу цикла или отдельной его итерации, то используют операторы break и continue. Оператор break заканчивает выполнение текущего цикла. Оператор continue позволяет пропустить дальнейшие инструкции из блока_выполнения любого цикла и продолжить выполнение с нового круга. 4) Оператор foreach Эта конструкция предназначена исключительно для работы с массивами. foreach ($array as $value) {блок_выполнения} либо foreach ($array as $key => $value) {блок_выполнения} В первом случае формируется цикл по всем элементам массива, заданного переменной $array. На каждом шаге цикла значение текущего элемента массива записывается в переменную $value, и внутренний счетчик массива передвигается на единицу. Внутри блока_выполнения значение текущего элемента массива может быть получено с помощью переменной $value. Выполнение блока_выполнения происходит столько раз, сколько элементов в массиве $array. Вторая форма записи на каждом шаге цикла записывает ключ текущего элемента массива в переменную $key, которую можно использовать в блоке_выполнения. Когда foreach начинает исполнение, внутренний указатель массива автоматически устанавливается на первый элемент. Пример 3. Использование оператора foreach <?php $names = array("Иван","Петр","Семен"); foreach ($names as $val) { echo "Привет, $val <br>"; // выводим всем приветствие } foreach ($names as $k => $val) { // кроме приветствия, выведем номера в списке, т.е. ключи echo "Привет, $val ! Ты в списке под номером $k <br>"; } ?> Альтернативный синтаксис PHP предлагает альтернативный синтаксис для некоторых управляющих структур: if, while, for, foreach и switch. В каждом случае открывающую скобку нужно заменить на двоеточие (:), а закрывающую – на endif;, endwhile; и т.д. соответственно. Например, синтаксис оператора if можно записать: if(выражение): блок_выполнения endif;
  • 17. 17 Если условие, записанное в круглых скобках оператора if, оказалось истиной, будет выполняться весь код, от двоеточия «:» до команды endif;. Использование такого синтаксиса полезно при встраивании php в html-код. Пример 4. Использование альтернативного синтаксиса <?php $names = array("Иван","Петр","Алекс"); if($names[0]=="Иван"): echo "Привет, Ваня!"; endif; ?> Для конструкции switch, как и для if, возможен альтернативный синтаксис, где открывающая switch фигурная скобка заменяется двоеточием, а закрывающая – endswitch; соответственно. Операторы включения: include и require Оператор include позволяет включать код, содержащийся в указанном файле, и выполнять его столько раз, сколько программа встречает этот оператор. Включение может производиться любым из перечисленных способов: 1) include 'имя_файла'; 2) include $file_name; 3) include ("имя_файла"); Пусть в файле params.inc хранится набор каких-то параметров и функций. Каждый раз, когда нужно будет использовать эти параметры (функции), следует вставлять в текст основной программы команду include 'params.inc'. Пример 5. Использование оператора включения include Файл params.inc <?php $user = "Дик"; $today = date("d.m.y"); /* функция date() возвращает дату в формате день.месяц.год) */ ?> Файл include.php <?php include ("params.inc"); /* переменные $user и $today заданы в файле params.inc. Здесь мы тоже можем ими пользоваться благодаря команде include("params.inc") */ echo "Привет, $user!<br>"; echo "Сегодня $today"; // выведет, например, "Сегодня 7.12.09" ?> Создание функции Функция представляет собой набор операторов, который идентифицируется определенным именем. Код внутри функции выполняет определенную задачу. Использование функций в программировании значительно облегчает процесс отладки. Для объявления функции используется следующий синтаксис: function имя_функции ([$аргумент1[, $аргумент2, ... $аргументN]]]) { Тело функции - PHP-код. [return "значение, возвращаемое функцией";] } Определение функции начинается с ключевого слова function, за которым следует имя функции, после имени – список аргументов в скобках. Тело функции заключается в фигурные скобки. Имя_функции и имена аргументов функции должны соответствовать правилам наименования переменных в PHP. Имена функций нечувствительны к регистру. Оператор return используется для возврата значения из функции. Оператор return может возвращать и массивы. Функция может не иметь параметров, как и возвращаемого значения.
  • 18. 18 Синтаксис вызова функции: имя_функции ("значение_для_аргумента1", "значение_для_аргумента2",...); Пример объявления и вызова функции s_info(), которой передаются три значения: <?php // определение функции s_info function s_info($first, $last, $message) { // функция выводит результат в браузер echo "<br>$message<br>"; echo "Имя: ". $first . " ". $last . "<br>"; } // вызов функции s_info s_info("Алия","Бахытова", "Всем привет!"); ?> Аргументы функций Каждый аргумент представляет собой переменную или константу. С помощью аргументов данные в функцию можно передать: по значению (используется по умолчанию) или по ссылке. Обычно передача аргумента функции осуществляется по значению. Это означает, что в функцию передается копия данных, а не сами данные. Если аргумент функции изменяется внутри тела функции, это не оказывает влияния на значения переменных за ее пределами. Для того чтобы переменные, переданные функции, сохраняли свое значение при выходе из нее, применяется передача параметров по ссылке. Для этого перед именем переменной необходимо поместить амперсанд (&). Пример передачи аргумента по значению. <? function get_summa($var) { $var = $var + 1000; return $var; } $new_var = 30; echo(get_summa($new_var)); // выводит 1030 echo("<br>$new_var"); // выводит 30 ?> Пример передачи аргумента по ссылке. Если аргумент передается по ссылке, при любом изменении значения параметра происходит изменение переменной-аргумента: <? function get_summa(&$var) // аргумент передается по ссылке { $var = $var + 1000; return $var; } $new_var = 30; echo(get_summa($new_var)); // выводит 1030 echo("<br>$new_var"); // выводит 1030 ?> Область действия переменных. Функции ограничивают область действия переменных. При использовании функций все переменные, создаваемые в ее теле, являются по умолчанию локальными и не доступны вне функции. Это означает, что одни и те же имена переменных могут быть использованы внутри различных функций, и это не приведет к возникновению
  • 19. 19 ошибок. Чтобы получить доступ к глобальным переменным, необходимо использовать их явное описание при помощи оператора global. Контрольные вопросы: 1. Как работают управляющие операторы условия if и switch? 2. Как работают операторы цикла for, while, foreach? 3. Назначение операторов включения include и require. 4. Как создать и вызвать собственную функцию? 5. Как работает передача аргумента по значению и по ссылке? Лекция 4: “ПЕРЕДАЧА ПАРАМЕТРОВ СЦЕНАРИЯМ С ПОМОЩЬЮ WEB-ФОРМ” План лекции: Создание HTML-формы для передачи данных на сервер. Способы передачи данных сценарию-обработчику. Конспект лекции Создание HTML-формы для передачи данных на сервер Обработка HTML-форм является очень важным свойством PHP. Данные, записанные в форму, отправляются для обработки скрипту PHP на сервере. Для создания формы в языке HTML используется контейнерный тег FORM, в которм задаются управляющие элементы - поля ввода, кнопки, переключатели, списки и т.п. После того как пользователь ввел необходимые данные в соответствующие поля, они могут быть обработаны соответствующим скриптом и сформирован ответ в виде HTML-страницы. С помощью атрибутов action и method тега FORM задаются имя программы, которая будет обрабатывать данные формы, и метод запроса, соответственно. Команда INPUT определяет тип и различные характеристики запрашиваемой информации. Отправка данных формы происходит после нажатия кнопки типа submit. Таблица 1. Элементы управления HTML Элемент управления Тег Описание Текстовое поле <INPUT TYPE=TEXT> Поле, предназначенное для ввода однострочного текста или других данных. Многострочный текст <TEXTAREA> Поле, предназначенное для ввода нескольких строчек текста. Выключатель (checkbox) <INPUT TYPE=CHECKBOX > Выключатель, для ввода логических переменных. Переключатель (radio button) <INPUT TYPE=RADIO> Переключатель, предназначенный для выбора одного из нескольких вариантов. Кнопка (button) <BUTTON> Кнопка с произвольным внешним видом. Кнопка- изображение (image map) <INPUT TYPE=IMAGE> Графическое изображение, на котором выделены области различной формы (прямоугольники, овалы, многоугольники) для гиперссылок на другие страницы. Отправка <INPUT TYPE=SUBMIT> Кнопка, предназначенная для завершения ввода данных и отправки их на web-сервер.
  • 20. 20 Пароль <INPUT TYPE=PASSWOR D> Текстовое поле для ввода пароля. При вводе символы пароля не отображаются на экране, заменяясь звездочками. Сброс <INPUT TYPE=RESET> Кнопка, предназначенная для очистки всех полей формы. Скрытое поле <INPUT TYPE=HIDDEN> Предназначен для хранения текста, который не виден, но экране, но доступен при обработке формы. Список <SELECT>, <OPTION>, <OPTGROUP> Многострочный список, предназначенный для выбора одного или нескольких элементов. Файл <INPUT TYPE=FILE> Файл для загрузки на сервер. Атрибуты тега <FORM>:  ACTION - задает URL скрипта, который будет обрабатывать данные, введенные в форме. Если атрибут не задан, то по умолчанию обработчиком будет назначен текущий скрипт или документ.  METHOD - определяет способ передачи данных (GET или POST) скрипту-обработчику. Если используется метод GET (по умолчанию), то все поля, описанные в форме, передаются в строке URL в следующем виде: URL? name=value&name=value. При использовании метода POST поля формы кодируются таким же образом, но передаются через скрытые переменные, не используя строку URL. Метод POST обычно используется при передаче большого объема данных или если необходимо скрыть от пользователя передаваемый набор полей. Строка <FORM METHOD="POST" ACTION="http://localhost/phpreader.php"> означает, что данные обрабатываются в скрипте phpreader.php. Строка <INPUT TYPE ="SUBMIT" VALUE="Отправить"> </FORM> означает, что все данные будут переданы в скрипт phpreader.php с помощью специального типа кнопки TYPE ="SUBMIT" TARGET. Задает имя фрейма, в котором будут отображен результат выполнения обработчика формы. Способы передачи данных сценарию После того как форма отправлена Web-серверу, если ее атрибут ACTION представляет собой PHP-сценарий, этот сценарий запускается и принимает данные, которые были отправлены. Как эти данные становятся доступными в PHP-коде? Существует множество методов извлечения данных. В зависимости от того, какой метод используется для отправки данных формы и передачи их РНР-сценарию (GET или POST), в РНР определены два суперглобальных массива, называемые, соответственно, $_GET и $_POST, которые могут использоваться для сохранения данных. Это ассоциативные массивы, содержащие список ключей (представляющих имена элементов формы, указанные в атрибутах NAME) и ассоциированных с ними значений. Например, значение переменной $_GET ['UserName'] будет содержать значение элемента HTML-формы, атрибут NAME которого равен UserName. Элемент HTML-формы: <INPUT TYPE="text" NAME="UserName" VALUE="Tim"> Код РНР: <?php echo $_GET['UserName']; // значение $_GET['UserName']=Tim ?> В результате отправки данных формы в окне браузера будет выведено: Tim
  • 21. 21 Термин суперглобальный означает, что переменные $_GET и $_POST будут всегда доступны без необходимости использования оператора global для включения их в текущий контекст. При использовании массива $_GET предполагается, что форма отправляется методом GET. Если же это делается методом POST, данные будут сохранены в массиве $_POST. Для обеспечения независимости от способа передачи данных рекомендуется использовать суперглобальный массив $_REQUEST, который комбинирует $_GET, $_POST, $_COOKIE и $_FILES. Пример web-формы: Контрольные вопросы: 1. Как работают методы GET и POST? 2. Как осуществляется доступ к данным, введенным в форму? 3. Как создать скрытые от пользователя данные? 4. Как ввести секретные данные? Лекция 5: “ИСПОЛЬЗОВАНИЕ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ” План лекции: Базовый синтаксис регулярных выражений. Функции PHP для работы с регулярными выражениями. Конспект лекции Регулярные выражения представляют мини-язык описаний для поиска в строках информации по заданному шаблону. С помощью регулярных выражений можно найти в строке подстроку, удовлетворяющую заданному шаблону и извлечь ее, проверить существует ли заданная строка и т.д. Базовый синтаксис регулярных выражений Простейшее регулярное выражение можно записать так: "abc" – это выражение соответствует любой строке, которая содержит подстроку "abc". Квадратные скобки ограничивают поиск теми символами, которые в них заключены: "[abc]" - этому регулярному выражению соответствует любая строка, содержащая abc либо вместе, либо каждый из них в отдельности. Групповой символ. При создании регулярных выражений часто удобно пользоваться групповым символом точки ".", который объединяет два одиночных символа, за исключением символа n. Ветви. В регулярном выражении может быть несколько ветвей, которые разделяются символом |, действующим как оператор OR (ИЛИ). Т. е., если в выражении используются ветви, то для соответствия регулярного выражения какой-либо строке, достаточно, чтобы только одна из ветвей соответствовала этой строке: "abc|абв" - этому регулярному выражению соответствует любая строка, содержащая подстроки "abc" или "абв". Ветвление удобно применять при проверке расширений и имен файлов, зон доменных имен и т. д. К примеру, следующее регулярное выражение проверяет, содержатся ли в строке подстроки "ru", "com" или "net": «ru|com|net» Исключающее выражение. Для исключения последовательности символов из поиска перед этой ней ставится символ "^":
  • 22. 22 "[^а-я]" - это регулярное выражение отвечает любому символу, не содержащемуся в диапазоне, а-я. Обратите внимание, что символ ^ находится внутри квадратных скобок, так как только в этом случае он имеет значение "не". При использовании символа ^ вне квадратных скобок, он имеет совсем иное значение. Квалификаторы. Регулярное выражение можно уточнить при помощи квалификаторов - так называются символы +, ?, *. Квалификаторы указывают, сколько раз последовательность символов может встретиться в строке и указываются непосредственно после той части выражения, к которой они применяются:  "a+" - хотя бы один, а (строки "абв" и "абва" соответствуют этому выражению, а строка "укр" - нет);  Границы. Границы - это числа в фигурных скобках, указывающие количество вхождений в строку фрагмента выражения, непосредственно предшествующего границе:  "xy{2}" соответствует строке, в которой за x следует два y;  "xy{2,}" соответствует строке, в которой за x следует не менее двух y (может быть и больше);  "xy{2,6}" соответствует строке, в которой за x следует от двух до шести y; Для указания количества вхождений не одного символа, а их последовательности, используются круглые скобки:  "x(yz){2,6}" соответствует строке, в которой за x следует от двух до шести последовательностей yz;  "x(yz)*" соответствует строке, в которой за x следует ноль и более последовательностей yz; Соответствие началу и концу строки. В регулярном выражении можно указать, должно ли конкретное подвыражение встречаться в начале, в конце строки или и в начале и в конце строки. Символ ^ соответствует началу строки: "^xz" - это выражение соответствует любой строке, начинающейся с xz. Обратите внимание, что в этом случае символ ^ ставится за пределами выражения в скобках, к примеру: "^[a-z]" Знак доллара $ соответствует концу строки: "xz$" – это регулярное выражение соответствует любой строке, заканчивающейся на xz. Сопоставление со специальными символами. В тех случаях, когда нужно сопоставить выражение строке, в которой встречаются спецсимволы, такие как $, ^, { и т. д., перед ними ставится символ обратной косой черты (). Например, для того, чтобы найти в строке символ $, в регулярном выражении нужно написать "$". То же самое относится и к самому символу обратной косой черты. Если нужно провести сопоставление с символом обратной косой черты, то в этом случае ставится две обратных косых черты, т. е. . Функции PHP для работы с регулярными выражениями PHP поддерживает два вида записи регулярных выражений: POSIX и Perl. POSIX расшифровывается как Portable Operating System Interface (интерфейс переносной операционной системы) и является стандартом для интерфейсов приложений. Рассмотрим работу с регулярными выражениями в стиле POSIX. Функция ereg() bool ereg(string pattern, string string [, array regs]) Данная функция ищет в строке string соответствие регулярному выражению, заданному в шаблоне pattern. Если соответствия подвыражений с шаблоном будут найдены, то они сохраняются в массиве соответствий regs. При этом $regs[0] содержит копию строки string, $regs[1] содержит подстроку, начинающуюся с первой левой скобки, $regs[2] хранит подстроку, начинающуюся со второй левой скобки и т.д. Ниже приведен код, преобразующий дату из формата YYYY-MM-DD в формат DD.MM.YYYY. <? $date = "2009-10-27"; if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) { echo "$regs[3].$regs[2].$regs[1]"; }
  • 23. 23 else { echo "Неверный формат даты: $date"; } ?> Результат: Функция ereg_replace() string ereg_replace(string pattern, string replacement, string string) Эта функция заменяет найденный в строке string шаблон pattern на строку replacement и, если соответствие найдено, возвращает модифицированную строку. Синтаксис функции таков, что число обязательно должно быть записано как строка. <? $number = "1989"; $str = "Он родился в восемьдесят девятом."; echo("До замены: $str"); $str = ereg_replace("восемьдесят девятом", $number, $str); echo("<br> После замены: $str"); ?> Результат: Функция eregi() идентична функции ereg, за исключением того, что она игнорирует регистр. Функция eregi_replace() аналогична функции ereg_replace, за исключением того, что она является нечувствительной к регистру. Функция split() array split (string pattern, string string [, int limit]) Эта функция возвращает массив строк, которые представляют собой подстроки строки string, образованные в результате разделения строки string на подстроки в соответствии с регулярным выражением pattern. Если указан необязательный параметр limit, то в возвращаемом массиве будет не больше limit элементов, последний из которых содержит неразделенную часть строки. Эта функция полезна при разделении дат, доменных имен и т.д. Пример с доменным именем: <? $url = "www.softtime.ru"; $array = split(".", $url); foreach($array as $index => $val) { echo("$index -> $val <br />"); } ?> Результат: Пример с датой. <?
  • 24. 24 $date = "10-12-2009"; $array = split ("-", $date); foreach($array as $index => $val) { echo("$index -> $val <br />"); } ?> Результат: 0 -> 10 1 -> 12 2 -> 2009 Функция spliti() аналогична функции split(), но является нечувствительной к регистру. Контрольные вопросы: 1. Для чего создают и используют регулярные выражения? 2. Назначение квалификаторов: +, ?, * 3. Как найти в строке специальные символы? 4. Охарактеризуйте функции для работы с регулярными выражениями. Лекция 6: “РАБОТА С ФАЙЛАМИ В PHP” План лекции: Основные команды для работы с файлами. Запись в файл и чтение из файла. Загрузка файлов на web-сервер. Обработка загруженного файла. Конспект лекции В РНР предусмотрен полный набор функций для работы с файлами. Кроме того, РНР предоставляет в распоряжение программиста средства просмотра и модификации серверной информации, а также запуска внешних программ. Обработка файлов позволяет реализовать различные прикладные задачи, от создания гостевой книги до ведения простого инвентарного списка и др. Основные команды для работы с файлами. Проверка существования и определение размера файла Прежде чем пытаться работать с файлом, необходимо убедиться в том, что он существует. Для решения этой задачи обычно используются две функции: file_exists( ) и is_file( ). 1. Функция file_exists() проверяет, существует ли заданный файл. Если файл существует, функция возвращает TRUE, в противном случае - FALSE. Синтаксис функции file_exists( ): bool file_exists(string файл) Пример проверки существования файла: if (!file_exists ($filename)) : print "File $filename does not exist!"; endif: 2. Функция is_file() проверяет не только существование заданного файла и возможность выполнения с ним операций чтения/записи. bool is_file(string файл) Следующий пример показывает, как убедиться в существовании файла и возможности выполнения операций с ним: $file = "somefile.txt"; if (is_file($file)) : print "The file $file is valid and exists!"; else : print "The file $file does not exist or it is not a valid file!"; endif;
  • 25. 25 Убедившись в том, что нужный файл существует и с ним можно выполнять различные операции чтения/записи, можно переходить к следующему шагу — открытию файла. 3. Функция filesize( ) возвращает размер (в байтах) файла с заданным именем или FALSE в случае ошибки. Синтаксис функции filesize( ): int filesize(string имя_файла) Предположим, вы хотите определить размер файла pastry.txt. Для получения нужной информации можно воспользоваться функцией filesize( ): $fs = filesize("pastry.txt"); print "pastry.txt is $fs bytes."; 4. Функция feof() возвращает значение TRUE при достижении конца файла. Прежде чем выполнять операции с файлом, необходимо открыть его и связать с файловым манипулятором, а после завершения работы с файлом его следует закрыть. Открытие файла: fopen() Функция fopen(string filename, string mode[, int use_include_path [, resource zcontext]]) Здесь filename — имя открываемого файла, mode - режим открытия файла (для чтения или записи), параметр use_include_path может быть установлен в значение 1 или TRUE для поиска файла по каталогам, указанным в параметре include_path конфигурационного файла php.ini. Необязательный параметр zcontext задает контекст файла, который предназначен для дополнительной обработки потоков данных в файл и из файла (в данной книге контексты не рассматриваются). Параметр mode, определяющий режим открытия и возможные операции с файлом, может принимать следующие значения: r Файл открывается только для чтения. r+ Файл открывается для чтения и записи. w Файл открывается только для записи. Если файл существует, он усекается до нулевой длины. Если файл не существует, он создается. w+ Файл открывается для чтения и записи. Если файл существует, он усекается до нулевой длины. Если файл не существует, он создается. a Файл открывается только для записи, указатель файла устанавливается на конец файла. Если файл не существует, он создается. a+ Файл открывается для чтения и записи, указатель файла устанавливается на конец файла. Если файл не существует, он создается. x Файл создается и открывается для записи. Если файл уже существует, функция fopen возвращает значение FALSE, свидетельствующее об ошибке. x+ Файл создается и открывается для чтения и записи. Если файл уже существует, функция fopen возвращает значение FALSE, свидетельствующее об ошибке. В следующем примере файл /home/ file.txt открывается для чтения: $handle = fopen("/home/file.txt", " r " ) ; При успешном открытии файла функция fopen() возвращает дескриптор файла, который используется для дальнейшей работы с файлом. После открытия файла данные могут быть, например, считаны при помощи функции fread, которая описана несколько ниже. Следующая строка открывает текстовый файл для записи: $handle = fopen ("/home/file.txt", " w t " ) ; To же самое для двоичного режима работы: $handle = fopen ("/home/file, txt", "wb"); При работе под Windows следует экранировать все обратные слэши, как показано ниже (или использовать прямые слеши): $handle = fopen ("с:datafile.txt", " r " ) ; При работе с файлами можно не ограничиваться локальной файловой системой. Например, можно открыть файл, находящийся на web-сервере, указав его URL: $handle = fopen("http://www.orioner.ru/index.html","r"); Для работы также доступен и FTP-протокол с заданием имени пользователя и пароля: