Windows: XAMPPのPHPでYAMLを扱う
最終更新:
Windowsの場合はDLLを設置してphp.ini
に追記するだけで使えるようです。
簡単ですね (*´∀`*)
環境
DLLの入手
下記からWindows用のDLLを入手します。
自機のPHPが対応している中で最新のバージョンのDLLを選べばいいと思います。
私の場合は"7.1 Thread Safe (TS) x86"をダウンロードします。
x86かx64か、TSかNTSかを確認するには、phpinfo()
で下記の項目を見てください。
TS、NTSの違いについては下記を。
🔗 ふぁいんどぱわー 調べる人の冒険!(チラシの裏よりチョット上) PHP のNon Thread Safe とThread Safe の違い
🔗 【php】Thread Safe と Non Thread Safe どっちを使ったらいい? at softelメモ
DLLの設置
解凍したフォルダの中にはDLLが2つ入っています。
それぞれ適切な場所に設置します。
DLL | 設置場所 |
---|---|
php_yaml.dll | C:\xampp\php\ext |
yaml.dll | C:\xampp\php (パスが通っている) |
yaml.dll
の設置場所は、WindowsがDLLを認識してくれるならどこでもいいようです。
私は、他のXAMPP用のDLLも設置されている上記の場所にしました。
php.ini
に追記
ファイルの末尾に追加します。
📄 C:\xampp\php\php.ini
extension=php_yaml.dll
その後、Apacheを再起動します。
確認
php -i | findstr /N /I "yaml" 759:yaml 761:LibYAML Support => enabled 763:LibYAML Version => 0.1.4 766:yaml.decode_binary => 0 => 0 767:yaml.decode_timestamp => 0 => 0 768:yaml.output_canonical => 0 => 0 769:yaml.output_indent => 2 => 2 770:yaml.output_width => 80 => 80
使う
📄 test.yml
# 連想配列 foo: FOO bar: BAR # 配列を持つ連想配列 baz: - BAZ1 - BAZ2 - BAZ3 # 多次元連想配列 あにゃまる探偵キルミンずぅ 声優: 御子神 リコ: 悠木碧 御子神 リム: 佐藤聡美 御子神 ナギサ: 安済知佳
📄 index.php
<?php $arr = yaml_parse_file('test.yml'); echo '<pre>'; print_r($arr); echo '</pre>';
結果
Array ( [foo] => FOO [bar] => BAR [baz] => Array ( [0] => BAZ1 [1] => BAZ2 [2] => BAZ3 ) [あにゃまる探偵キルミンずぅ 声優] => Array ( [御子神 リコ] => 悠木碧 [御子神 リム] => 佐藤聡美 [御子神 ナギサ] => 安済知佳 ) )
さすがにマルチバイト文字列はダブルクオートで囲まないとエラーになるかと思いきや、問題なく処理してくれました。
JSONよりも読みやすいですね。