# php-serialized-ast

> Parse a PHP-serialized string

Latest version **1.1.1** (published 2018-08-18) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install php-serialized-ast
pnpm add php-serialized-ast
yarn add php-serialized-ast
bun add php-serialized-ast
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 1.1.1 |
| Published | 2018-08-18 |
| First published | 2018-08-16 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 8.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Maintainers | aleclarson |

## Links

- npm: https://www.npmjs.com/package/php-serialized-ast
- Repository: https://github.com/aleclarson/php-serialized-ast
- Homepage: https://github.com/aleclarson/php-serialized-ast#readme
- Issues: https://github.com/aleclarson/php-serialized-ast/issues
- npm.io page: https://npm.io/package/php-serialized-ast

## Recent versions

- 1.1.1 (latest) — 2018-08-18
- 1.1.0 — 2018-08-18
- 1.0.2 — 2018-08-16
- 1.0.1 — 2018-08-16
- 1.0.0 — 2018-08-16

## README

# php-serialized-ast v1.1.1

Mimics the `unserialize` function in PHP, but returns AST nodes instead.

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.

```js
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 }]
```

Passing `true` to `parse` will cause it to return raw values instead of AST nodes. Array nodes are *not* converted in any way.

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

Passing a function to `parse` will transform every parsed array.

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

function onArray(arr) {
  let res = [];
  for (let i = 0; i < arr.length; i += 2) {
    res[arr[i]] = arr[i + 1];
  }
  return res;
}
```

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

&nbsp;

### `reduce(ast: Array<Node> | Node)`

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

Array nodes are *not* converted in any way.

```js
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 doing `parse(str, true)` because of the intermediate AST nodes.

---
_Source: https://npm.io/package/php-serialized-ast · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
