(PECL yaml >= 0.4.0)
yaml_parse — Parse a YAML stream
Convert all or part of a YAML document stream to a PHP variable.
inputThe 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.
callbacksContent handlers for YAML nodes. Associative array of YAML tag => callable mappings. See parse callbacks for more details.
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.
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."
}
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.