这是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”的结果,因为“serialize”是一个php函数(而不是由人类创建),并且字符串必须可以在文本编辑器中手动创建。
该字符串将作为参数传递给一个函数,该函数将其转换为如上所示的php数组。
如果它是一个简单的数组,我会使用逗号分隔的字符串并“爆炸”。但它是多级的,因此使用“explode”将无法工作,因为它将拆分内部数组。 preg_split看起来也不大,因为数组非常不规则。
任何想法怎么做?
答案 0 :(得分:2)
尝试将其转换为xml文档,如何将人类和机器读取?
有许多php库可以这样做并将xml文件读入php数组......
对于底漆
答案 1 :(得分:1)
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"}]}
答案 2 :(得分:1)
如果这是由人写的,YAML可能是你最好的选择。
有一些PHP implementations可用。