3

これは、phpの混合、マルチレベル、不規則な配列の例です。

$settings['style_formats'] = array(
  array('title' => 'Center table', 'selector' => 'table', 'styles' => array('margin-left' => 'auto', 'margin-right' => 'auto')),
  array('title' => 'Menu style', 'selector' => 'ul,ol', 'classes' => 'menu'),
  array('title' => 'Layer2', 'inline' => 'div', 'styles' => array('background-color' => 'orange')),
  array('title' => 'Bold text', 'inline' => 'b'),
  array('title' => 'Red text', 'inline' => 'span', 'styles' => array('color' => '#ff0000')),
  array('title' => 'Red header', 'block' => 'h1', 'styles' => array('color' => '#ff0000')),
  array('title' => 'Example 1', 'inline' => 'span', 'classes' => 'example1'),
  array('title' => 'Example 2', 'inline' => 'span', 'classes' => 'example2'),
  array('title' => 'Table styles'),
  array('title' => 'Table row 1', 'selector' => 'tr', 'classes' => 'tablerow1'),
);

この種の配列を文字列形式からphp配列に表現して変換する方法を見つける必要があります。初期文字列形式は、人間がテキストエディタを使用して読み取りおよび書き込み可能である必要があります。たとえば、「serialize」はphp関数であり(人間が作成することはできません)、文字列はテキストエディタで手動で作成できる必要があるため、「serialize」を使用した結果ではありません。

文字列はパラメータとして関数に渡され、関数は上記のようなphp配列に変換します。

単純な配列の場合は、コンマ区切りの文字列を使用して「展開」します。ただし、これはマルチレベルであるため、「explode」を使用すると内部配列が分割されるため、機能しません。preg_splitも、配列が非常に不規則であるため、有望に見えません。

それを行う方法はありますか?

4

3 に答える 3

2

これをxmlドキュメントに変換してみてはどうでしょうか。人間と機械の両方で読み取り可能でしょうか?

そうするための多くのphpライブラリがあり、xmlファイルをphp配列に読み込みます...

入門書用

http://www.phpbuilder.com/columns/adam_delves20060206.php3

http://www.php.net/manual/en/book.simplexml.php

于 2012-04-11T17:33:22.653 に答える
1

JSONは、次のような多くのソリューションの1つです:(フォーマットしないことを許してください)

{"style_formats":[{"title":"Center table","selector":"table","styles":{"margin-left":"auto","margin-right":"auto"}},{"title":"Menu style","selector":"ul,ol","classes":"menu"},{"title":"Layer2","inline":"div","styles":{"background-color":"orange"}},{"title":"Bold text","inline":"b"},{"title":"Red text","inline":"span","styles":{"color":"#ff0000"}},{"title":"Red header","block":"h1","styles":{"color":"#ff0000"}},{"title":"Example 1","inline":"span","classes":"example1"},{"title":"Example 2","inline":"span","classes":"example2"},{"title":"Table styles"},{"title":"Table row 1","selector":"tr","classes":"tablerow1"}]}
于 2012-04-11T17:39:47.467 に答える
1

これを人間が作成する場合は、YAMLが最善の策かもしれません。

利用可能なPHP実装がいくつかあります。

于 2012-04-11T17:49:02.080 に答える