Php/docs/function.yaml-parse

From Get docs

yaml_parse

(PECL yaml >= 0.4.0)

yaml_parseParse a YAML stream


Description

yaml_parse ( string $input [, int $pos = 0 [, int &$ndocs [, array $callbacks = NULL ]]] ) : mixed

Convert all or part of a YAML document stream to a PHP variable.


Parameters

input
The string to parse as a YAML document stream.
pos
Document to extract from stream (-1 for all documents, 0 for first document, ...).
ndocs
If ndocs is provided, then it is filled with the number of documents found in stream.
callbacks
Content handlers for YAML nodes. Associative array of YAML tag => callable mappings. See parse callbacks for more details.


Return Values

Returns the value encoded in input in appropriate PHP type or FALSE on failure. If pos is -1 an array will be returned with one entry for each document found in the stream.


Examples

Example #1 yaml_parse() example

<?php$yaml = <<<EOD---invoice: 34843date: "2001-01-23"bill-to: &id001  given: Chris  family: Dumars  address:    lines: |-      458 Walkman Dr.              Suite #292    city: Royal Oak    state: MI    postal: 48046ship-to: *id001product:- sku: BL394D  quantity: 4  description: Basketball  price: 450- sku: BL4438H  quantity: 1  description: Super Hoop  price: 2392tax: 251.420000total: 4443.520000comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338....EOD;$parsed = yaml_parse($yaml);var_dump($parsed);?>

The above example will output something similar to:


array(8) {
  ["invoice"]=>
  int(34843)
  ["date"]=>
  string(10) "2001-01-23"
  ["bill-to"]=>
  &array(3) {
    ["given"]=>
    string(5) "Chris"
    ["family"]=>
    string(6) "Dumars"
    ["address"]=>
    array(4) {
      ["lines"]=>
      string(34) "458 Walkman Dr.
        Suite #292"
      ["city"]=>
      string(9) "Royal Oak"
      ["state"]=>
      string(2) "MI"
      ["postal"]=>
      int(48046)
    }
  }
  ["ship-to"]=>
  &array(3) {
    ["given"]=>
    string(5) "Chris"
    ["family"]=>
    string(6) "Dumars"
    ["address"]=>
    array(4) {
      ["lines"]=>
      string(34) "458 Walkman Dr.
        Suite #292"
      ["city"]=>
      string(9) "Royal Oak"
      ["state"]=>
      string(2) "MI"
      ["postal"]=>
      int(48046)
    }
  }
  ["product"]=>
  array(2) {
    [0]=>
    array(4) {
      ["sku"]=>
      string(6) "BL394D"
      ["quantity"]=>
      int(4)
      ["description"]=>
      string(10) "Basketball"
      ["price"]=>
      int(450)
    }
    [1]=>
    array(4) {
      ["sku"]=>
      string(7) "BL4438H"
      ["quantity"]=>
      int(1)
      ["description"]=>
      string(10) "Super Hoop"
      ["price"]=>
      int(2392)
    }
  }
  ["tax"]=>
  float(251.42)
  ["total"]=>
  float(4443.52)
  ["comments"]=>
  string(68) "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
}

Notes

Warning Processing untrusted user input with yaml_parse() is dangerous if the use of unserialize() is enabled for nodes using the !php/object tag. This behavior can be disabled by using the yaml.decode_php ini setting.


See Also