yaml_parse
(PECL yaml >= 0.4.0)
yaml_parse — Parse 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: 34843 date: "2001-01-23" bill-to: &id001 given: Chris family: Dumars address: lines: |- 458 Walkman Dr. Suite #292 city: Royal Oak state: MI postal: 48046 ship-to: *id001 product: - sku: BL394D quantity: 4 description: Basketball price: 450 - sku: BL4438H quantity: 1 description: Super Hoop price: 2392 tax: 251.420000 total: 4443.520000 comments: 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
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
- yaml_parse_file() - Parse a YAML stream from a file
- yaml_parse_url() - Parse a Yaml stream from a URL
- yaml_emit() - Returns the YAML representation of a value
© 1997–2020 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/function.yaml-parse.php