Skip to content

PHP serialize and unserialize for NodeJS (with useful error messages)

License

Notifications You must be signed in to change notification settings

aleclarson/php-serialized

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php-serialized v1.2.0

PHP serialize and unserialize for NodeJS (with useful error messages)

const {serialize, unserialize} = require('php-serialized');

serialize([ null ]);
// => 'a:1:{i:0;N;}'

unserialize('a:1:{i:0;N;}');
// => [ [0, null] ]

The return value of unserialize is always an array.

By default, array nodes are not converted in any way.

Pass a function to transform parsed arrays.

unserialize('a:1:{i:0;N;}', (arr) => {
  let res = [];
  for (let i = 0; i < arr.length; i += 2) {
    res[arr[i]] = arr[i + 1];
  }
  return res;
});
// => [ [null] ]

Note: Serialized class instances are not currently supported. Pull requests are encouraged!

 

parse(str: string, raw: Function | true): Array<Node>

Parse a serialized string into an array of AST nodes.

Any syntax errors are returned in an array. The parser will continue until the end is reached or a fatal error is encountered. This means multiple errors can be returned.

When 1+ errors are encountered, the returned array will only contain error nodes. Use results[0].type !== 'error' to know if there are no errors.

const {parse} = require('php-serialized-ast');

parse('a:0:{}');
// => [{ type: 'array', value: [], start: 0, end: 6 }]

parse('a:0:{');
// => [{ type: 'error', error: 'Array never closed', start: 0 }]

 

reduce(ast: Array<Node> | Node) : any

Convert AST nodes to their raw values using the reduce function.

Array nodes are not converted in any way.

const {reduce, parse} = require('php-serialized-ast');

reduce(parse('a:1:{i:0;N;}')); => [ [0, null] ]

Note: Doing reduce(parse(str)) will always be slower than doing unserialize(str) because of the intermediate AST nodes.

About

PHP serialize and unserialize for NodeJS (with useful error messages)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published