Перейти к содержимому

unpack()

В этой статье мы сосредоточимся на функции PHP unpack(). Мы предоставим вам обзор функции, принцип её работы и примеры использования.

Введение в функцию unpack()

Функция unpack() — это встроенная функция PHP, предназначенная для распаковки бинарных данных в переменные PHP. Это мощный инструмент, который можно использовать для извлечения данных из бинарных файлов или сетевых протоколов.

Функция unpack() принимает два аргумента: формат распаковываемых бинарных данных и сами бинарные данные.

Как использовать функцию unpack()

Использование функции unpack() очень просто. Вам нужно лишь вызвать функцию и передать формат распаковываемых бинарных данных и сами данные. Вот пример:

Как использовать функцию unpack()?

php
<?php
$data = "\x01\x02\x03\x04\x05";
$result = unpack("C*", $data);
print_r($result);
?>

В этом примере у нас есть строка бинарных данных $data, содержащая байты \x01\x02\x03\x04\x05. Затем мы вызываем функцию unpack() со строкой формата "C*", которая указывает функции распаковать данные как массив беззнаковых символов. Символ * используется для обозначения того, что мы хотим распаковать все данные. Если в строке формата не указаны ключи, unpack() возвращает массив с числовыми ключами, начиная с 1. Мы присваиваем полученный массив переменной $result, а затем выводим содержимое массива с помощью print_r().

Результат выполнения этого скрипта будет следующим:


console
Array
(
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [5] => 5
)

Это демонстрирует, что функция unpack() успешно распаковала бинарные данные в массив беззнаковых символов.

Расширенное использование

Функцию unpack() также можно использовать в более сложных сценариях. Например, вы можете использовать её для распаковки данных в переменные разных типов PHP. Вот пример:

Пример использования PHP unpack()

php
<?php
$data = "\x01\x02\x03\x04\x05\x06\x07\x08";
$result = unpack("C2chars/Sint/Nlong", $data);
print_r($result);
?>

В этом примере у нас есть строка бинарных данных $data, содержащая байты \x01\x02\x03\x04\x05\x06\x07\x08. Затем мы вызываем функцию unpack() со строкой формата "C2chars/Sint/Nlong". Это указывает функции распаковать первые два байта в ключи chars1 и chars2, следующие два байта в int, а последние четыре байта в long. Обратите внимание, что порядок байтов целых чисел зависит от архитектуры системы. По умолчанию S использует системный порядок байтов, а N принудительно устанавливает порядок big-endian. Чтобы обеспечить согласованные результаты на разных системах, вы можете добавить явные модификаторы порядка байтов (например, V для little-endian, n для сетевого/big-endian) к спецификаторам формата. Мы присваиваем полученный массив переменной $result, а затем выводим содержимое массива с помощью print_r().

Результат выполнения этого скрипта будет следующим:


console
Array
(
    [chars1] => 1
    [chars2] => 2
    [int] => 1027
    [long] => 84281096
)

Это демонстрирует, что функция unpack() успешно распаковала бинарные данные в массив переменных разных типов PHP.

Заключение

Подводя итог, функция unpack() — это мощный инструмент для распаковки бинарных данных в переменные PHP. Понимая, как использовать функцию и её расширенные возможности, вы сможете извлекать данные из бинарных файлов или сетевых протоколов в своих PHP-скриптах.

Практика

Что делает функция PHP 'unpack'?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.