International PHP Conference 2015

yaml_parse_file

(PECL yaml >= 0.4.0)

yaml_parse_fileAnaliza una secuencia de texto en formato YAML desde un fichero

Descripción

mixed yaml_parse_file ( string $filename [, 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

filename

Ruta del nombre del fichero.

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.

Ver también

add a note add a note

User Contributed Notes 2 notes

up
4
Jesse Donat
4 years ago
This is entirely dependent on type detection - as far as I can find there is no way to force a type and for instance when you have a very long integer as a value - in my case 1313035348823 it gets limited to 2147483647 - PHP's max integer.
up
0
Arne L.
24 days ago
As Jesse Donat mentioned the type will be infered automatically. To enforce some type you can use the callback facility like this:

<?php
function cb_yaml_date($value, $tag, $flags) {
    return new
DateTime($value);
}

$yaml = <<<YAML
event1:
  name: My Event
  date: !date 25.05.2001
YAML;

$ndocs = 0;
$data = yaml_parse($yaml, 0, $ndocs, array('!date' => 'cb_yaml_date'));

print_r($data);
?>

The above example will output something similar to:

    Array
    (
        [event1] => Array
            (
                [name] => My Event
                [date] => DateTime Object
                    (
                        [date] => 2001-05-25 00:00:00
                        [timezone_type] => 3
                        [timezone] => Europe/Berlin
                    )
   
            )
   
    )

BTW if you want to have large numbers you are probably using BC Math. Thus, you simple enclose your number in quotes:

<?php
$yaml
= <<<YAML
largenumber: '14695760472279668267313200104308'
YAML;
?>
To Top