View on GitHub

php-yaml

YAML-1.1 parser and emitter PECL package

The Yaml PHP Extension provides a wrapper to the LibYAML library.

It gives the user the ability to parse YAML document streams into PHP constructs and emit PHP constructs as valid YAML 1.1 documents.

Key Features

Installation

Php-yaml can be installed using PHP's PECL package manager. This extension requires the LibYAML C library version 0.1.0 or higher to be installed.

$ sudo apt-get install libyaml-dev
$ sudo pecl install yaml

Use

See the extension documentation for (mostly) complete details on using the library.

Example

<?php
$addr = array(
    "given" => "Chris",
    "family"=> "Dumars",
    "address"=> array(
        "lines"=> "458 Walkman Dr.
        Suite #292",
        "city"=> "Royal Oak",
        "state"=> "MI",
        "postal"=> 48046,
      ),
  );
$invoice = array (
    "invoice"=> 34843,
    "date"=> "2001-01-23",
    "bill-to"=> $addr,
    "ship-to"=> $addr,
    "product"=> array(
        array(
            "sku"=> "BL394D",
            "quantity"=> 4,
            "description"=> "Basketball",
            "price"=> 450,
          ),
        array(
            "sku"=> "BL4438H",
            "quantity"=> 1,
            "description"=> "Super Hoop",
            "price"=> 2392,
          ),
      ),
    "tax"=> 251.42,
    "total"=> 4443.52,
    "comments"=> "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
    );

// generate a YAML representation of the invoice
$yaml = yaml_emit($invoice);
var_dump($yaml);

// convert the YAML back into a PHP variable
$parsed = yaml_parse($yaml);

// check that roundtrip conversion produced an equivalent structure
var_dump($parsed == $invoice);

Acknowledgements

php-yaml v0.1.0 through v0.3.0 was developed by Ryusuke Sekiyama.

Since v0.4.0 the extension has been maintained by Bryan Davis. Development of v0.4.0 to v1.1.0 supported by Keynetics Inc. Special thanks to Brad and Tim for being executives who understand that giving back to the open source community is important.

Inspiration and some implementation details have been taken from:

Other helpful folks: