It seams the YAML standard version here is the 1.1 and not the (1.2 released in 2009), so all of the following values: y, Y, yes, Yes, YES, n, N, no, No, NO, true, True, TRUE, false, False, FALSE, on, On, ON, off, Off, OFF are confusingly at times interpreted as booleans.yaml_parse
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
yaml_parse
Референца за `function.yaml-parse.php` со подобрена типографија и навигација.
yaml_parse
(PECL yaml >= 0.4.0)
yaml_parse — Анализирајте YAML поток
= NULL
Конвертирајте цел или дел од YAML документ поток во PHP променлива.
Параметри
input-
На string за анализирање како YAML документ поток.
pos-
Документ за извлекување од поток (
-1за сите документи,0за првиот документ, ...). ndocs-
Враќа
ndocsе обезбедено, тогаш се пополнува со бројот на пронајдени документи во потокот. callbacks-
Ракувачи со содржина за YAML јазли. Асоцијативни array на YAML таг => callable мапирања. Погледнете callback функции за парсирање за повеќе детали.
Вратени вредности
Ја враќа вредноста кодирана во input во соодветен PHP тип или false Враќа име на базата на податоци при успех, и pos is -1 an
array ќе биде вратен со еден запис за секој документ пронајден во потокот.
Примери
Пример #1 yaml_parse() example
<?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);
?>Горниот пример ќе прикаже нешто слично на:
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."
}
Белешки
Обработката на недоверливи кориснички внесувања со yaml_parse()
е опасна ако употребата на unserialize() е овозможена за јазли што го користат !php/object таг. Ова однесување може да се оневозможи со користење на yaml.decode_php ini поставката.
Види Исто така
- yaml_parse_file() - Анализирај YAML поток од датотека
- yaml_parse_url() - Анализирај YAML поток од URL
- yaml_emit() - Враќа YAML претстава на вредност
Белешки од корисници 3 белешки
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)When entering the string through a form, I had to first use utf8_decode on the input before using yaml_parse or else I got a cryptic error message --
Warning: yaml_parse(): reading error encountered during parsing: control characters are not allowed (line 1, column 1)
-- even though the special character was buried deep in the file.