Be aware that when parsing yaml an unquoted Y value will become a boolean true
This may be desired or undesired behavior depending on context
- chr_name: X // becomes string X
- chr_name: Y // becomes boolean true
[
[chr_name => X],
[chr_name => true],
]
You definitely don't want chromosome Y becoming chromosome 1 (true) as happened to me, so heads up!yaml_parse_file
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
yaml_parse_file
Референца за `function.yaml-parse-file.php` со подобрена типографија и навигација.
yaml_parse_file
(PECL yaml >= 0.4.0)
yaml_parse_file — Анализирајте YAML поток од датотека
= NULL
Конвертирајте го целиот или дел од YAML документот прочитан од датотека во PHP променлива.
Параметри
filename-
Патека до датотеката.
pos-
Документ за извлекување од поток (
-1за сите документи,0за првиот документ, ...). ndocs-
Враќа
ndocsе обезбедено, тогаш се пополнува со бројот на пронајдени документи во потокот. callbacks-
Ракувачи со содржина за YAML јазли. Асоцијативни array на YAML таг => callable мапирања. Погледнете callback функции за парсирање за повеќе детали.
Вратени вредности
Ја враќа вредноста кодирана во filename во соодветниот PHP тип.
При неуспех, се враќа стринг што содржи порака за грешка.
Враќа pos is -1, еден array
ќе биде вратен со еден запис за секој документ пронајден во потокот.
Белешки
Обработката на недоверливи кориснички внесувања со yaml_parse_file()
е опасна ако употребата на unserialize() е овозможена за јазли што го користат !php/object таг. Ова однесување може да се оневозможи со користење на yaml.decode_php ini поставката.
Види Исто така
- yaml_parse() - Анализирај YAML поток
- yaml_parse_url() - Анализирај YAML поток од URL
- yaml_emit() - Враќа YAML претстава на вредност
Белешки од корисници 3 белешки
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;
?>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.