php_serializer v0.9.2 PhpSerializer

Summary

Functions

Serialize Elixir data

Unserialize PHP data

Functions

serialize(val)

Serialize Elixir data

iex> PhpSerializer.serialize(123)
"i:123;"

iex> PhpSerializer.serialize([1, :some_atom, %{1=> "a", "b" => 2}])
"a:3:{i:0;i:1;i:1;s:9:"some_atom";i:2;a:2:{i:1;s:1:"a";s:1:"b";i:2;}}"

iex> PhpSerializer.serialize(%PhpSerializable{class: "NameOfTheClass", data: "somedata"})
"C:14:"NameOfTheClass":8:{somedata}"
unserialize(str, opts \\ [])

Unserialize PHP data

iex> { status, data } = PhpSerializer.unserialize("a:3:{i:0;i:1;i:1;s:9:"some_atom";i:2;a:2:{i:1;s:1:"a";s:1:"b";i:2;}}")
{:ok, [{0, 1}, {1, "some_atom"}, {2, [{1, "a"}, {"b", 2}]}]}
iex> List.keyfind(data, 1, 0)
{1, "some_atom"}

with options:

iex> { status, data } = PhpSerializer.unserialize("a:3:{i:0;i:1;i:1;s:9:"some_atom";i:2;a:2:{i:1;s:1:"a";s:1:"b";i:2;}}", array_to_map: true)
{:ok, %{0 => 1, 1 => "some_atom", 2 => %{1 => "a", "b" => 2}}}

bad input:

iex> { status, data } = PhpSerializer.unserialize("i:0;i:34;")
{:error, "left extra characters: 'i:34;'"}