PHP Conference Japan 2024

yaml_emit

(PECL yaml >= 0.5.0)

yaml_emit返回值的 YAML 表示形式

描述

yaml_emit(
    混合 $data,
    int $encoding = YAML_ANY_ENCODING,
    int $linebreak = YAML_ANY_BREAK,
    数组 $callbacks = null
): 字符串

生成提供的 data 的 YAML 表示形式。

参数

data

被编码的 data。可以是除 资源 之外的任何类型。

encoding

输出字符编码,从 YAML_ANY_ENCODINGYAML_UTF8_ENCODINGYAML_UTF16LE_ENCODINGYAML_UTF16BE_ENCODING 中选择。

linebreak

输出换行符样式,从 YAML_ANY_BREAKYAML_CR_BREAKYAML_LN_BREAKYAML_CRLN_BREAK 中选择。

callbacks

用于发出 YAML 节点的內容处理程序。类名 => 可调用映射的关联 数组。更多详细信息,请参见 发出回调

返回值

成功时返回 YAML 编码的 字符串

变更日志

版本 描述
PECL yaml 1.1.0 添加了 callbacks 参数。

范例

示例 #1 yaml_emit() 示例

<?php
$addr
= array(
"given" => "Chris",
"family"=> "Dumars",
"address"=> array(
"lines"=> "458 Walkman Dr.
Suite #292"
,
"city"=> "Royal Oak",
"state"=> "MI",
"postal"=> 48046,
),
);
$invoice = array (
"invoice"=> 34843,
"date"=> 980208000,
"bill-to"=> $addr,
"ship-to"=> $addr,
"product"=> array(
array(
"sku"=> "BL394D",
"quantity"=> 4,
"description"=> "Basketball",
"price"=> 450,
),
array(
"sku"=> "BL4438H",
"quantity"=> 1,
"description"=> "Super Hoop",
"price"=> 2392,
),
),
"tax"=> 251.42,
"total"=> 4443.52,
"comments"=> "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
);
var_dump(yaml_emit($invoice));
?>

以上示例将输出类似于以下内容:

string(628) "---
invoice: 34843
date: 980208000
bill-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
ship-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
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.
...
"

参见

添加注释

用户贡献的注释 2 条注释

1
josh dot sickmate at gmail dot com
5 年前
没有缩进深度的选项,所以总是两个空格。如果需要更多空格,可以使用简单的正则表达式。

将两个空格转换为四个空格
<?php
$yaml
= preg_replace('/^( +)/m', '$1$1', $yaml);
?>

在替换中再添加两个 $1 以获得八个空格。
1
nsa at succhia dot cz
1 年前
请注意,NULL 值将转换为波浪号“~”。

这可能有点违反直觉,但这绝对合法,并且似乎是每个 Yaml 解析器都认可的标准。所以,不用担心。Yaml 参考

http://yaml.org/spec/1.2-old/spec.html#id2805071
To Top