(PECL yaml >= 0.4.0)
yaml_parse — Analyse un flux YAML
Convertit tout ou partie d'un document YAML provenant d'une chaîne vers une variable PHP.
input
La chaîne à analyser comme document YAML.
pos
Le document à extraire du flux (-1 pour tous les documents, 0 pour le premier, ...).
ndocs
Si le paramètre ndocs
est fourni, alors il est
rempli avec le nombre de documents trouvés dans le flux.
callbacks
Analyseurs de contenu pour les noeuds YAML. Tableau associatif tag YAML => callable. Voir l'analyse des fonctions de rappel pour plus d'informations.
Retourne la valeur encodée de input
dans le type PHP
approprié ou FALSE
si une erreur survient.
Si pos
vaut -1, un tableau sera retourné
avec pour chaque valeur un document trouvé dans le flux.
Exemple #1 Exemple yaml_parse()
<?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);
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
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." }
Le fait de traiter une entrée utilisateur non sécurisée avec yaml_parse() est dangereux si l'utilisation de unserialize() est activé pour les noeuds utilisant la balise !php/object. Ce comportement peut être désactivé en utilisant la configuration ini yaml.decode_php.