php как представить многоуровневый массив в строковой форме


Это пример смешанного, многоуровневого, нерегулярного массива в 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. Исходный формат строки должен быть удобочитаемым и доступным для записи человеком с помощью текстового редактора. Так, например, это не должно быть результатом использования "сериализации", потому что "сериализация" - это функция php (и, скорее, ее невозможно создать человеком), и строку должно быть возможно создать вручную в тексте редактор.

Строка будет передана в качестве параметра функции, которая переведет ее в массив php, подобный приведенному выше.

Если бы это был простой массив, я бы использовал строку, разделенную запятыми, и "взорвался". Но он многоуровневый, поэтому использование "взрыва" не будет работать, так как это приведет к разделению внутренних массивов. preg_split также не выглядит многообещающим, потому что массив очень нерегулярен.

Есть идеи, как это сделать?

Author: camcam, 2012-04-11

3 answers

JSON является одним из многих решений, например: (простите меня за отсутствие форматирования)

{"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"}]}
 1
Author: orourkek, 2012-04-11 17:39:47

Как насчет того, чтобы попытаться перевести это в xml-документ, который был бы удобочитаемым как для человека, так и для машины?

Для этого существует множество библиотек php, и вы можете прочитать xml-файл в массив php...

Для грунтовки

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

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

 2
Author: Sandeep Rajoria, 2012-04-11 17:33:22

Если это должно быть написано людьми, YAML может быть вашим лучшим выбором.

Доступно несколько реализаций PHP .

 1
Author: Alix Axel, 2012-04-11 17:54:27