Лекция №7.
PHP.
«Быстрый старт».
Первая программа на PHP.
Вставив инструкцию print между PHP-тэгами, мы даём команду серверу послать приветствие «Hello, world!» в браузер. Это аналогично тому, что мы ввели данный текст в HTML-код.
1. <HTML>
2. <HEAD>
3. <TITLE> First PHP Script </TITLE>
4. </HEAD>
5. <BODY>
6. <?PHP
7. print ("Hello, world!”);
8. ?>
9. </BODY>
10. </HTML>
Синтаксис переменных.
В PHP все переменные обозначаются следующим образом: знак доллара ($), за ним имя переменной. Имя должно начинаться либо с буквы (A-Z, a-z), либо с символа подчёркивания (_). Состоять оно может из любого количества букв, цифр, знаков подчеркивания или их комбинации. В имени переменной нельзя использовать пробелы. Вместо них для разделения слов обычно используется символ подчёркивания.
Необходимо помнить, что для имен имеет значение регистр. Необходимо сразу научиться давать переменным содержательные имена, а также использовать комментарии для указания их назначения (/* */).
Типы переменных.
Числа.
Для простоты обучения мы объединили два вида чисел — целые и с плавающей запятой — в одну группу. Целые числа могут быть положительными или отрицательными, но не дробными. Числа с десятичным знаком (даже такие как 1.0) — это числа с плавающей запятой.
Дробь содержит два не используемых в числах знака: пробел и слеш (/).
Строки.
Переменная является строкой (string), если состоит из знаков (некоторая комбинация букв, цифр, символов и пробелов), заключённых в одинарные или двойные кавычки. Строки могут содержать любую комбинацию символов, включая имена других переменных.
Пример верного значения строки:
“1972”
Язык PHP позволяет использовать такие числовые строки непосредственно в математических выражениях.
При использовании функции print () для создания кода HTML можно экранировать кавычки, поставив перед ними обратный слеш. Изменив строку на “I said, \”How are you?\””, выдали команду PHP включить эти кавычки как часть значения строки, а не рассматривать их как индикаторы начала и конца строки. Вместе с двойными кавычками следует также экранировать апостроф или одинарные кавычки ('), обратный слеш (\) и знак доллара ($).
Двойные кавычки имеют бесспорное преимущество перед одинарными: значение переменной будет распечатано только при использовании первых.
Хотя обратный слеш используется для экранирования некоторых специальных символов, в сочетании с некоторыми буквами он имеет особое значение. Так, комбинация "\n" означает новую строку, "\r" — возврат каретки, а "\t" — знак табуляции.
Массивы.
Строка и число обычно содержат одно значение, а массив может иметь несколько определенных для него значений.
Стандартный массив PHP, состоящий из строк и чисел, в языке Perl также называется массивом. Создав состоящий из массивов массив, можно создать в PHP эквивалент используемого в Perl «хэша», также называемого ассоциативным или многомерным массивом. В PHP эти два типа — одномерные или многомерные массивы — не различаются.
Присвоение значений переменным.
В начале этой главы мы упомянули, что в PHP нет необходимости инициализировать или объявлять переменные. Значение переменной присваивается независимо от типа с помощью знака равенства (=). Он называется оператором присваивания, так как присваивает значение переменной, стоящей слева от него.
Тип переменной может изменяться «на лету», так как он не зафиксирован (PHP относится к языкам со слабым контролем типов, как JavaScript):
$variable = 1;
$variable = “Greetings”;
Вы можете явно присвоить переменной тип при первом её использовании (присвоение типа — это то же, что и объявление переменной, когда точно указывается её тип). Синтаксис для этого следующий:
$number = (integer) 5;
$string = (string) “Hello, World!”;
Предопределённые переменные.
Важность предопределённых переменных нельзя недооценивать: во-первых, они иначе используются в программах, во-вторых, вы можете случайно создать переменную с таким же именем, а это, вероятно, приведет к проблемам.
Предопределённые переменные — специальный тип переменных, который используется и программой Web-сервера (например, Apache), и операционной системой Web-сервера (Unix или Windows NT), и самим модулем PHP. Первые две категории называют также переменными окружения или переменными среды. В разных серверах могут применяться разные наборы предопределенных переменных. С помощью сценария test.php вы увидите, какие переменные среды используются на вашей машине.
Создание на странице переменной с тем же именем, что и переменная среды, приведёт к непредсказуемым результатам. Как видно из списка переменных среды, сгенерированного сценарием test.php, полный отказ от использования прописных букв в имени переменной уменьшает возможность возникновения конфликтов.
Использование строк.
Из-за небрежности пользователя при вводе информации, а иногда из-за неаккуратного HTML-кода часто к строке-переменной добавляются лишние пробелы. Перед тем как применять подобные строки, эти пробелы обязательно нужно удалить. В таком случае вам удастся избежать множества проблем. Строка с невидимым дополнительным пробелом уже не будет совпадать с такой же строкой без пробела. Лишние пробелы, посланные в Web-браузер, могут исказить вид страницы, а пробелы, отправленные в базу данных, или cookie-файлы вызвать ещё более неприятные последствия. Например, если пароль содержит концевые пробелы, он не будет действителен при введении без пробелов.
Функция trim () автоматически отсекает лишние пробелы в начале и конце строки (но не в середине). Используется следующий формат функции trim ():
$String=”extra space before and after text”;
$ String=trim ($String);
//Переменная $String теперь равна ”extra space before and after text”.
Соединение строк (сцепление, конкатенация).
Хотя термин сцепление, или конкатенация, не очень благозвучен, им обозначается чрезвычайно важный оператор — построение предложения из отдельных фраз, или соединение нескольких строк в одну. Для этого предназначен оператор точка (.), который используется аналогично знаку плюс в арифметических выражениях:
$NewString=$aString . $bString;
Таким образом можно связать любое количество строк. К строкам с таким же успехом добавляются числа, которые становятся частью новой строки:
$NewString=$aString . $bString . $cNumber;
Числовая переменная $cNumber будет автоматически преобразована в строку и добавлена к содержимому переменной $NewString.
Кодирование и декодирование строк.
Что делать, если необходимо передать несколько слов как одно значение переменной?
Для таких случаев понадобится функция urlencode (). Как видно из её имени, функция кодирует (encode) строку для того, чтобы она была правильно передана как часть URL. В частности, функция urlencode () заменяет пробелы на знаки плюс (+) и преобразовывает специальные символы, например апостроф, в более подходящие для URL знаки.
Функция urldecode () выполняет действие, обратное действию urlencode (): она берёт закодированную для URL строку и преобразует её обратно в обычную стандартную форму.
Шифрование и дешифрование строк.
Операции шифрования и дешифрования используются на большинстве сайтов, особенно тех, через которые ведется электронная торговля. Часто единственны и способ защитить ценные данные — зашифровать их, то есть преобразовать в форму, в которой информацию трудно, порой практически невозможно распознать, не зная ключа. Пароли представляют собой данные, которые всегда необходимо шифровать. В зависимости от желаемого уровня безопасности можно также кодировать имена пользователей, адреса электронной почты, номера телефонов.
Первая функция – crypt (.) — может использоваться для кодирования данных, но расшифровать их обратно не удастся.
Извлечение части строки.
Из длинных строк можно также извлекать маленькие части. Рассмотрим две функции, с помощью которых можно делать это. Необходимо отметить, что для эффективного извлечения частей строки нужно иметь какую-то информацию о самой строке.
Функция strtok () извлекает подстроку, называемую лексемой, из строки на основе заранее установленного разделителя (обычно запятая или пробел). Например, если пользователи вводят имя и фамилию в одном поле, разделяя эти данные пробелом, то можно узнать имя с помощью следующего кода:
$FirstName = strtok ($Name, “ “);
Второй способ выделения подстрок — обратиться к индексной позиции символов внутри строки. Индексация строки означает нумерацию символов с начала строки, как если бы строка была массивом, а символы — её элементами. В РНР, как и в большинстве языков программирования, индексация начинается с нуля. Разобравшись с индексами, мы можем использовать функцию substr () для выделения нужного диапазона символов:
$SubString = substr ($String, 0, 10);
Во-первых, необходимо указать строку (здесь это $String), из которой будет вырезаться подстрока. Во-вторых, с помощью индекса необходимо указать начало подстроки (если вы начинаете индексацию с нуля, значит, учитываться будет и первый символ). Третьим параметром вы указываете, из скольких символов будет состоять подстрока (10). Если строка состоит из меньшего количества символов, чем 10, подстрока закончится в конце строки.
Часто для определения длины строки используют функцию strlen ().
Сложение, вычитание, умножение и деление.
Умножение в языке РНР обозначается звездочкой (*).
Для сложения используется знак плюс (+).
Для операции вычитания используется знак минус (-).
Операция деления – знак (/).
Форматирование чисел.
Для печати значения переменной в форме числа с плавающей точкой с двумя цифрами после неё (в качестве примера возьмем число 1.02) необходимо написать:
printf (“%01.2f”, $Amount) ;
Инкремент и декремент.
В PHP, как в Perl и большинстве других языков программирования, есть особые операторы, нужные для того, чтобы сократить длинные неуклюжие присвоения вроде $Tax = $Tax + 1;. Если необходимо увеличить значение переменной ровно на единицу (инкремент) или уменьшить на единицу (декремент), можно использовать операторы «++» и «--» соответственно.
$Tax++;
$Number--;
Совместное использование различных операторов.
При обсуждении различного рода математических операторов неизбежно возникает вопрос приоритета — порядка выполнения действий при вычислениях.
Это неполный список операторов, расположенных в порядке их приоритета (от высшего к низшему). Так, умножение имеет более высокий приоритет, чем сложение