PhpSerializer (php_serializer v2.0.0) View Source
Link to this section Summary
Link to this section Types
Link to this section Functions
Specs
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{class: "NameOfTheClass", data: "somedata"})
"C:14:\"NameOfTheClass\":8:{somedata}"
Specs
unserialize(String.t(), array_to_map: boolean(), strict: boolean(), with_excess: boolean() ) :: {:ok, any()} | {:ok, any(), excess_data()} | {:error, error_msg(), excess_data()} | {:error, error_msg()}
Unserialize PHP data
iex> 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> {:ok, 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;}}")
iex> List.keyfind(data, 1, 0)
{1, "some_atom"}converted to maps:
iex> 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}}}with excess data:
iex> PhpSerializer.unserialize("i:0;i:34;")
{:ok, 0}
iex> PhpSerializer.unserialize("i:0;i:34;", with_excess: true)
{:ok, 0, "i:34;"}
iex> PhpSerializer.unserialize("i:0;i:34;", strict: true)
{:error, "excess characters found"}
iex> PhpSerializer.unserialize("i:0;i:34;", strict: true, with_excess: true)
{:error, "excess characters found", "i:34;"}