PHP Conference Japan 2024

yaml_emit

(PECL yaml >= 0.5.0)

yaml_emit傳回值的 YAML 表示法

說明

yaml_emit(
    混合 $data,
    整數 $encoding = YAML_ANY_ENCODING,
    整數 $linebreak = YAML_ANY_BREAK,
    陣列 $callbacks = null
): 字串

產生所提供 `data` 的 YAML 表示法。

參數

data

要編碼的 `data`。可以是任何類型,除了 資源 類型。

encoding

從 **`YAML_ANY_ENCODING`**、**`YAML_UTF8_ENCODING`**、**`YAML_UTF16LE_ENCODING`**、**`YAML_UTF16BE_ENCODING`** 中選擇的輸出字元編碼。

linebreak

從 **`YAML_ANY_BREAK`**、**`YAML_CR_BREAK`**、**`YAML_LN_BREAK`**、**`YAML_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 則筆記

josh dot sickmate at gmail dot com
5 年前
縮排深度沒有選項,因此一律為兩個空格。如果您想要更多空格,可以使用簡單的正規表達式。

從兩個空格轉換為四個空格
<?php
$yaml
= preg_replace('/^( +)/m', '$1$1', $yaml);
?>

在取代字串中再加入兩個 $1 即可得到八個空格。
nsa at succhia dot cz
1 年前
請注意,NULL 值將會轉換為波浪號 "~"。

這可能有點違反直覺,但這是完全合法的,而且它似乎是每個 Yaml 解析器都認可的標準。所以,不用擔心。Yaml 參考

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