Deserialize PHP into Clojure data structures and back again.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/php_clj
test/php_clj
.gitignore
.travis.yml
README.md
project.clj

README.md

php-clj Build Status

A Clojure library to deserialize PHP as generated by serialize into Clojure data structures and vice versa.

Current version: 0.4.1
Supported Clojure versions: 1.4, 1.5, 1.5.1

Usage

(ns foo.bar
  (:require [php_clj.core :refer [php->clj clj->php]]))

(php->clj "s:18:\"Café Scientifique\";")
;; => "Café Scientifique"

(php->clj "i:1337;")
;; => 1337

(php->clj "a:2:{s:4:\"Wöo\";a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}s:3:\"Bar\";b:0;}")
;; => #ordered/map (["Wöo" [1 2 3]] ["Bar" false])

(clj->php "Café")
;; => "s:5:\"Café\";"

(clj->php {"name" "Bob"})
;; => "a:1:{s:4:\"name\";s:3:\"Bob\";}"

A Note on PHP Arrays

As PHP's Arrays are actually ordered maps, converting an array such as:

array(
    "name" => "Bob",
    "age" => 42
)

Will result in an ordered map equivalent to the following:

{"name" "Bob", "age" 42}

Note that Clojure's standard map implementation does not retain insertion order (and ArrayMaps are only suitable for "very small maps") hence the use of the ordered-map type.

Arrays with consecutive indices starting at 0 such as

array(
    0 => "a",
    1 => "b",
    2 => "c"
)

Will be converted into vectors like so:

["a" "b" "c"]

Installation

php-clj is available on Clojars, add the following to your Leiningen dependencies:

[php-clj "0.4.1"]

References

License

Copyright © 2014 Paul Mucur.

Distributed under the Eclipse Public License.