Выбрать главу

$bindata = pack("nvc*", 0x1234, 0x5678, 65, 66);

После выполнения приведенного кода в строке $bindata будет содержаться 6 байтов в такой последовательности:0x12, 0x34, 0x78, 0x56, 0x41, 0x42 (в шестнадцатиричной системе счисления).

unpack

Распаковывает данные из двоичной строки.

Синтаксис:

array unpack(string format, string data);

Распаковывает данные из двоичной строки в массив согласно формату. Возвращает массив, содержащий распакованные элементы.

$array = unpack("c2chars/nint", $binarydata);

Возникающий в результате массив будет содержать "chars1", "chars2" и "int".

iptcparse

Анализирует двоичный IPTC блок на одиночные тэги.

Синтаксис:

array iptcparse(string iptcblock);

Эта функция анализирует двоичный блок IPTC на одиночные теги. Возвращает массив, использующий tagmarker как индекс и значение как значение. Возвращает false при ошибке или если никаких IPTC данных не было найдено.

leak

Имитация утечки памяти.

Синтаксис:

void leak(int bytes);

leak() отсекает определенный объем памяти.

Это полезно при отладке диспетчера памяти, который автоматически очищает "отсеченную" память при выполнении запроса.

Размер блока памяти указывается в байтах аргументом bytes.

serialize

Генерирует удобохраниемое представление значения.

Синтаксис:

string serialize(mixed value);

serialize() возвращает строку состоящую из потока байтов при представлении значения value, которое может где-нибудь сохранено.

Это полезно для сохранения или передачи значений PHP без потери их типа и структуры.

Пример:

//$session_data содержит многомерный массив

с информацией о сессии

//текущего пользователя. Мы используем

serialize() для сохранения

//этого в базе данных в конце запроса.

$conn = odbc_connect("webdb", "php", "chicken");

$stmt = odbc_prepare($conn,

"UPDATE sessions SET data = ? WHERE id = ?");

$sqldata = array(serialize($session_data),

$PHP_AUTH_USER);

if (!odbc_execute($stmt, &$sqldata)) {

$stmt = odbc_prepare($conn,

INSERT INTO sessions (id, data) VALUES(?, ?)");

if (!odbc_execute($stmt, &$sqldata)) {

/* Что-то сделано неправильно. */

}

}

unserialize

Создает PHP значение из сохраненного представления.

Синтаксис:

mixed unserialize(string str);

unserialize() берет одно сохраненное значение и преобразует обратно в PHP значение. Возвращает преобразованное значение, и может иметь тип: integer, double, string, array или object. Если был преобразован object, то методы не востановятся.

Пример:

// Здесь мы используем unserialize() для загрузки

данных о сессии из базы данных

// в $session_data. Этот пример дополняет

описанный в месте

// с serialize() .

$conn = odbc_connect("webdb", "php", "chicken");

$stmt = odbc_prepare($conn,

"SELECT data FROM sessions WHERE id = ?");

$sqldata = array($PHP_AUTH_USER);

if (!odbc_execute($stmt, &$sqldata) ||

!odbc_fetch_into($stmt, &$tmp)) {

// Если сбой запуска или выборки ,

// то инициализируем массив

$session_data = array();

} else {

// Мы должны иметь представление в $tmp[0].

$session_data = unserialize($tmp[0]);

if (!is_array($session_data)) {

// Что-то неправильно, инициализируем массив

$session_data = array();

}

}

uniqid

Генерирует уникальный идентификатор.

Синтаксис:

int uniqid(string prefix [, boolean lcg]);

Функция uniqid() возвращает уникальный идентификатор, основанный на текущем времени в микросекундах и имеющий префикс prefix.Префикс может быть полезен, например, если Вы генерируете идентификаторы одновременно на отдельных хостах, которые, могли бы случилось, генерировали идентификатор в одной и той же микросекунде. Префикс может быть длиной до 114 символов.Если в качестве его значения передается пустая строка, то длина сгенерированного идентификатора будет 13 символов (при lcg=true - 23 символа).

Если указан необязательный аргумент lcg со значением true, к концу идентификатора будет добавляться "комбинированный хеш энтропии LCG", делающий его значение более уникальным.

Принято также дообрабатывать полученное значение криптографическими методами (например, это часто делается в идентификаторах сессий).

// без случайной части

$token = md5(uniqid(""));

// посложнее

$better_token = md5(uniqid(rnad()));

Эти строки генерируют 32 байта (128-битное шестнадцатеричное число): они обладают максимальной унакальностью, которая только может потребоваться.

Почтовые функции

mail

Отсылает почту.

Синтаксис:

mail($to, $subject, $msg [,$headers]);

Функция mail() посылает сообщение с телом $msg (это может быть "многострочная строка", т.е. переменная, содержащая несколько строк, разделенных символом перевода строки) по адресу $to. Можно задать сразу несколько получателей, разделив их адреса пробелами в параметре $to.

Пример:

mail("info@spravkaweb.ru admin@spravkaweb.ru",

"Мое сообщение",

"Первая строка\nВторая строка\nТретья строка"

);

В случае, если указан четвертый параметр, переданная в нем строка вставляется между концом стандартных почтовых заголовков (таких как To, Content-type и т.д.) и началом текста письма. Обычно этот параметр используется для задания дополнительных заголовков письма.