Php/docs/function.yaml-parse

提供:Dev Guides
< Php
移動先:案内検索

yaml_parse

(PECL yaml >= 0.4.0)

yaml_parseYAML ストリームをパースする


説明

yaml_parse ( string $input [, int $pos = 0 [, int &$ndocs [, array $callbacks = null ]]] ) : mixed

YAML ドキュメントストリーム全体あるいはその一部を、PHP の変数に変換します。


パラメータ

input
YAML ドキュメントストリームとしてパースする文字列。
pos
ストリームから取り出すドキュメント (-1 はすべてのドキュメント、0 は最初のドキュメント、...)。
ndocs
ndocs を渡すと、 ストリーム内で見つかったドキュメントの数がそこに格納されます。
callbacks
YAML ノードのコンテンツハンドラ。 YAML タグ => callable 形式の連想配列となります。 詳細はパースコールバック を参照ください。


返り値

適切な PHP の型に変換した結果を返します。 失敗した場合に false を返します。 pos-1 の場合は配列を返します。 配列の各要素が、ストリーム内で見つかった個々のドキュメントとなります。


例1 yaml_parse() の例

<?php$yaml = <<<EOD---invoice: 34843date: "2001-01-23"bill-to: &id001  given: Chris  family: Dumars  address:    lines: |-      458 Walkman Dr.              Suite #292    city: Royal Oak    state: MI    postal: 48046ship-to: *id001product:- sku: BL394D  quantity: 4  description: Basketball  price: 450- sku: BL4438H  quantity: 1  description: Super Hoop  price: 2392tax: 251.420000total: 4443.520000comments: 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."
}

注意

警告 !php/object タグを使ったノードの unserialize() を有効にしている場合に、 ユーザーからの信頼できない入力を yaml_parse() で処理するのは危険です。 この挙動を無効にするには、ini 設定の yaml.decode_php を利用します。


参考