# yaml_parse

(PECL yaml >= 0.4.0)

yaml_parse — Analyse un flux YAML

### Description

yaml_parse(
string `$input`,
int `$pos` = 0,
int `&$ndocs` = ?,
array `$callbacks` = `null`
): mixed

Convertit tout ou partie d'un document YAML provenant d'une chaîne vers une variable PHP.

### Liste de paramètres

`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 nœuds YAML. Tableau associatif tag YAML => callable. Voir l'analyse des fonctions de rappel pour plus d'informations.

### Valeurs de retour

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.

### Exemples

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);
?>`

Résultat de l'exemple ci-dessus est 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."
    }

### Notes

Avertissement

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 nœuds utilisant la balise `!php/object`. Ce comportement peut être désactivé en utilisant la configuration ini `yaml.decode_php`.

### Voir aussi

- yaml_parse_file() - Analyse un flux YAML depuis un fichier
- yaml_parse_url() - Analyse un flux YAML depuis une URL
- yaml_emit() - Retourne une chaîne représentant une valeur YAML