52680.fb2 Справочник по PHP - читать онлайн бесплатно полную версию книги . Страница 114

Справочник по PHP - читать онлайн бесплатно полную версию книги . Страница 114

Пакетирование данных в двоичную строку.

Синтаксис:

string pack(string format [,mixed $args, ...]);

Функция pack() упаковывает заданные аргументы в бинарную строку, которая затем и возвращается. Формат параметров, а также их количество, задается при помощи строки $format, которая представляет собой набор однобуквенных спецификаторов форматирования - наподобие тех, которые указываются в sprintf(), но только без знака %. После каждого спецификатора может стоять число, которое отмечает, сколько информации будет обработано данным спецификатором. А именно, для форматов a,A,h и H число задает, какое количество символов будет помещено в бинарную строку из тех, что находится в очередном параметре-строке при вызове функции (то есть, определяет размер поля для вывода строки). В случае @ оно определяет абсолютную позицию, в которую будут помещены следующие данные. Для всех остальных спецификаторов следующие за ними числа задают количество аргументов, на которые распространяется действие данного формата. Вместо числа можно указать *, в этом случае подразумевается, что спецификатор действует на все оставшиеся данные.

Вот полный список спецификаторов формата:

// Целое, целое, все остальное - сиволы

$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)) {

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

}