- •Переменные
- •Внешние переменные
- •Константы
- •Типы данных в рнр. Преобразование типов
- •Операторы
- •2. Операторы языка php Операторы выбора/ if...Else
- •Операторы выбора/ Переключатель switch
- •Операторы цикла
- •Операторы цикла/ While
- •Операторы цикла/ Do…while
- •Операторы цикла/ For
- •3. Строковые функции php
- •Функция htmlspecialchars
- •Функции поиска в тексте
- •Функции strlen(), chr() и ord()
- •Trim-функции (функции удаления пробельных символов)
- •Функции форматного вывода. Спецификаторы преобразования
- •Функция sscanf()
- •Функции преобразования кодировки
- •Функции работы с бинарными данными
- •Функции работы с блоками текста
- •Функции объединения/разделения строк
- •Функции сравнения строк
- •Функции работы с url
- •Функции преобразования регистра
- •Заключение к главе 3
- •4. Массивы Инициализация массивов
- •Цикл foreach для обхода массивов
- •Многомерные массивы
- •Функция count()
- •Функция in_array()
- •Функция reset()
- •Функции сортировки массивов
- •Работа с курсором (указатель) массива
- •Функция array_walk()
- •Функции Определения и вызовы функций
- •Время жизни переменной
- •Что такое рекурсия
- •Работа с файлами Открытие файлов
- •Отображение файлов
- •Закрытие файлов
- •Чтение из файлов и запись в файлы Чтение из файлов
- •Запись в файлы
- •Копирование, переименование и удаление файлов
- •Атрибуты файлов
- •Перемещение по файлам
- •Работа с каталогами
- •Методы put и post
- •7. Регулярные выражения
- •Базовый синтаксис и создание регулярных выражений
- •Групповой символ
- •Исключающее выражение
- •Квалификаторы
- •Границы
- •Подвыражения
- •Соответствие началу и концу строки
- •Сопоставление со специальными символами
- •Классы символов
- •Функции для работы с регулярными выражениями
- •Perl-совместимые регулярные выражения
- •8. Сессии и cookie в php Сессии (сеансы) в php
- •Открытие сессии
- •Регистрация переменных сессии
- •Закрытие сессии
- •Пример простой сессии
- •Установка cookies
- •Пример простого приложения с cookies
- •Установка срока годности cookies
- •Удаление cookie
- •Проблемы безопасности, связанные с cookies
- •Установка области видимости cookie
- •Шифрование
- •Ограничение доступа для доменов
- •Отправка cookies по защищенному запросу
- •9. Работа с ftp средствами php Основные возможности php при работе с ftp
- •Соединение с ftp-сервером
- •Регистрация на ftp-сервере
- •Закрытие соединения
- •Загрузка файлов с сервера
- •Другие возможности при работе с ftp
- •Переход в родительский каталог
- •Работа через брандмауэр
- •10. Проверка корректности данных Проверка корректности данных
- •Проверка на пустоту поля
- •Проверка допустимости вводимых данных
- •Удаление html - тегов и обратных слешей
- •11. Пишем гостевую книгу на php
- •Добавление записи
- •Реляционные базы данных
- •Индексы
- •Первичные ключи
- •Способы задания первичного ключа
- •Нормализация базы данных
- •Работа с сервером MySql
- •Язык sql
- •Команды sql
- •Типы полей базы данных
Функция sscanf()
Синтаксис:
mixed sscanf(string str, string format [, string var1 ...])
Эта функция является полной противоположностью функции printf(). Она интерпретирует строку str согласно форматуformat, аналогично спецификации printf(). При указании только двух аргументов полученные значения возвращаются как массив.
Давайте рассмотрим такой пример. Пусть у нас есть строка, в которой находится информация о названии и серийном номере изделия в виде "maxtor/203-5505" и нам надо вытащить из нее серийный номер. Пишем вот такой скриптик:
<?
$product = "maxtor/203-5505";
$str = sscanf($product,"maxtor/%3d-%4d");
echo ("$str[0]-$str[1]");
?>
Результат:
203-5505 |
Не забывайте, что если не указываете в функции необязательные аргументы, то на выходе получите массив, и поэтому при выводе мы работаем со значениями массива.
Давайте поработаем еще с датой изготовления этого изделия, которая нам явилась в виде "august 10 2003", а нам надо чтоб она выводилась в виде " 10 aug 2003". Работаем.
<?
$date = "august 10 2003";
list($month, $day, $year) = sscanf($date, "%s %d %d");
echo("Date: $day-".substr($month,0,3)."-$year");
?>
Результат:
Date: 10-aug-2003 |
Важное замечание: при указании необязательных параметров их надо передавать по ссылке (ссылка обозначается указанием символа "&" перед переменной).
Пример, в котором используются дополнительные необязательные параметры:
<?
$book = "1\tThinking in PHP";
$str = sscanf($book,"%d\t%s %s %s", &$id, &$first, &$second, &$last);
echo ("book number $id - $first $second $last");
?>
Результат:
book number 1 - Thinking in PHP>
Функции преобразования кодировки
convert_cyr_string() |
bin2hex() |
convert_cyr_string()
Синтаксис:
string convert_cyr_string(string str, string from, string to)
Функция преобразует строку из одной кодировки кириллицы в другую. Она переводит строку str из кодировки from в кодировку to. Значения from и to это одиночные символы, определяющий кодировку:
k - koi8-r;
w - windows-1251;
i - iso8859-5;
a - x-cp866;
d - x-cp866;
m - x-mac-cyrillic;
Давайте для примера перекодируем слово "определяющий" из кодировки windows-1251 в koi8-r и обратно:
<?
$str1 = "определяющий";
$str2 = convert_cyr_string($str1,"w","k");
echo ("result of translate '$str1' to koi8-r is '$str2'");
echo ("<br>");
$str3 = convert_cyr_string($str2,"k","w");
echo ("result of translate '$str2' to win is '$str3'");
?>
И вот результат:
bin2hex()
Производит побайтовое преобразование символьных данных в шестнадцатеричный вид.
Функция bin2hex() принимает в качестве единственного параметра строку и возвращает строковое шестнадцатеричное представление символов, содержащихся в этой строке.
Для примера давайте перекодируем тоже самое слово "определяющий":
<?
$str1 = "определяющий";
$str2 = bin2hex($str1);
echo($str2);
?>
И вот какая абракадабра из этого получилась:
Результат:
Функции работы с бинарными данными
pack() |
unpack() |
Собственно, таких функций две – pack() и unpack(). Первая осуществляет пакетирование данных в двоичную строку, а вторая – распаковывает данные из двоичной строки. Лично у меня пока не было необходимости пользоваться этими функциями, кроме как при подготовке примеров их использования для этой главы. Но кто знает, может быть кому-то они очень нужны, поэтому мы с ними чуть-чуть повозимся.
Итак, функция:
pack()
Синтаксис:
string pack(string format [ ,mixed $args, ...])
Функция pack() упаковывает заданные в ее параметре аргументы в бинарную строку. Формат параметров и их количество задается при параметром $format, при помощи тех же спецификаторов форматирования, о которых мы говорили, только без знака %. После каждого спецификатора может стоять число, которое говорит о том, сколько информации будет обработано данным спецификатором. Для форматов a, A, h и H это число задает количество символов, которые будут помещены в бинарную строку из тех, что находятся параметре-строке при вызове функции (то есть, фактически определяется размер поля вывода строки). Если мы используем спецификатор "@", то мы определяем абсолютную позицию, в которую будут помещены данные. Для всех остальных спецификаторов следующие за ними числа задают количество аргументов, на которые распространяется действие данного формата. Вместо числа можно указать *, в этом случае спецификатор действует на все оставшиеся данные. Заметим, что функция возвращает упакованные данные в шестнадцатеричном формате.
Список спецификаторов формата:
a - строка, свободные места в поле заполняются символом с кодом 0;
A - строка, свободные места заполняются пробелами;
h - шестнадцатеричная строка, младшие разряды в начале;
H - шестнадцатеричная строка, старшие разряды в начале;
c - знаковый байт (символ);
C - беззнаковый байт;
s - знаковое короткое целое;
S - беззнаковое короткое число;
n - беззнаковое целое (16 битов, старшие разряды в конце);
v - беззнаковое целое (16 битов, младшие разряды в конце);
i - знаковое целое (размер и порядок байтов определяется архитектурой);
I - беззнаковое целое;
l - знаковое длинное целое (32 бита, порядок знаков определяется архитектурой);
L - беззнаковое длинное целое;
N - беззнаковое длинное целое (32 бита, старшие разряды в конце);
V - беззнаковое целое (32 бита, младшие разряды в конце);
f - число с плавающей точкой;
d - число двойной точности;
x - символ с нулевым кодом;
X - возврат назад на 1 байт;
@ - заполнение нулевым кодом до заданной абсолютной позиции.
Функция
unpack()
Как уже говорилось выше, Распаковывает данные из двоичной строки согласно формату. Функция возвращает массив, содержащий распакованные элементы.
Синтаксис:
array unpack(string $format, string $data)
Давайте попробуем что-нибудь запаковать. К примеру, так.
<?
$bin = pack("nvn*",0x5722,0x1148, 65, 66); // запаковываем, согласно формату
$var = bin2hex($bin); // перекодируем из шестнадцатеричного формата
echo($var);
?>
Итак, что мы увидели: функция вернула 6 байтов, причем в такой последовательности:
0х57, 0х22, 0х48, 0х11, 0х00, 0х41, 0х00, 0х42. Понятно, почему так. Согласно заданному нами формату (nvn*), первое число мы возвращаем как беззнаковое целое со старшими разрядами в конце, второе тоже как беззнаковое целое, только в конце – младшие разряды (поэтому нам вернулось 0х48, 0х11, а не 0х11, 0х48), и все остальное до конца мы возвращаем как беззнаковое целое со старшими разрядами в конце.