Skip to content

unpack()

In this article, we will focus on the PHP unpack() function. We will provide you with an overview of the function, how it works, and examples of its use.

Introduction to the unpack() function

The unpack() function is a built-in function in PHP that is used to unpack binary data into PHP variables. It is a powerful tool that can be used to extract data from binary files or network protocols.

The unpack() function takes two arguments: the format of the binary data to unpack, and the binary data to unpack.

How to use the unpack() function

Using the unpack() function is very simple. You just need to call the function and pass the format of the binary data to unpack and the binary data itself. Here is an example:

How to use the unpack() function?

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

In this example, we have a binary data string $data containing the bytes \x01\x02\x03\x04\x05. We then call the unpack() function with a format string "C*" which tells the function to unpack the data as an array of unsigned characters. The * character is used to indicate that we want to unpack all of the data. When no keys are specified in the format string, unpack() returns an array with numeric keys starting from 1. We assign the resulting array to a variable $result and then output the contents of the array using print_r().

The output of this script will be:


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

This shows that the unpack() function has successfully unpacked the binary data into an array of unsigned characters.

Advanced usage

The unpack() function can also be used in more advanced scenarios. For example, you can use the function to unpack data into different types of PHP variables. Here is an example:

Example of PHP unpack()

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

In this example, we have a binary data string $data containing the bytes \x01\x02\x03\x04\x05\x06\x07\x08. We then call the unpack() function with a format string "C2chars/Sint/Nlong". This tells the function to unpack the first two bytes into keys chars1 and chars2, the next two bytes into int, and the final four bytes into long. Note that integer byte order depends on the system architecture. By default, S uses native endianness, while N forces big-endian order. To ensure consistent results across different systems, you can append explicit endianness modifiers (e.g., V for little-endian, n for network/big-endian) to the format specifiers. We assign the resulting array to a variable $result and then output the contents of the array using print_r().

The output of this script will be:


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

This shows that the unpack() function has successfully unpacked the binary data into an array of different types of PHP variables.

Conclusion

In conclusion, the unpack() function is a powerful tool for unpacking binary data into PHP variables. By understanding how to use the function and its advanced usage scenarios, you can take advantage of this feature to extract data from binary files or network protocols in your PHP scripts.

Practice

What does the PHP 'unpack' function do?

Do you find this helpful?

Dual-run preview — compare with live Symfony routes.