Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL

yaml_parse

(PECL yaml >= 0.4.0)

yaml_parseAnaliza una secuencia de texto en formato YAML

Descripción

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

Convierte toda o parte de una secuencia de texto en YAML a una variable en PHP.

Parámetros

input

La secuencia de texto (string) a analizar en formato YAML.

pos

Documento YAML a extraer desde la secuencia de texto (-1 para analizar todos los documentos, 0 solo para el primer documento, etc).

ndocs

Si se facilita ndocs, se completará con el número de documentos encontrados en la secuencia de texto.

callbacks

Controlador de contenido para los nodos YAML. Es un array associativo de etiquetas YAML => asociando sus callback correspondientes. Ver Analizar callbacks para más información.

Valores devueltos

Devuelve el valor codificado de input en el formato apropiado de PHP o FALSE en caso de error. Si el valor de pos es -1 devolverá un array con una entrada por cada documento encontrado en el texto.

Ejemplos

Ejemplo #1 Ejemplo de 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);
?>

El resultado del ejemplo sería algo similar a:

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."
}

Ver también

add a note add a note

User Contributed Notes 1 note

up
0
alpacagm at gmail dot com
2 years ago
Simple usage example of interpreting custom tags:
<?php
$data
=
"#yaml
---
data: !mytag bar test
...
"
;

function
callback($value){
  return
str_replace('bar','baz',$value);
}
$cnt;
$array=yaml_parse($data,0,$cnt,array('!mytag'=>'callback'));

print_r($array['data']);
?>
output:
Array
(
   [data] => baz test
)
note, there is a related bug in version 1.0.1 (see tracker)
To Top