2013-03-06 86 views
1

我有用来保存属性和关键值,以在物体上访问一个值的字符串..PHP字符串数组键

例如,字符串为“PROPERTY_NAME [KEY1] [KEY2] [KEY3]” ,这涉及到$obj->property_name[key1][key2][key3]

我一直试图解析正则表达式的字符串,但我所有的尝试都徒劳。

到目前为止,我的正则表达式看起来像这样,但它不会得到key2。 ^(\w+)\[([^\]]+)\](?:(\[([^\]]+)\])+)

我在正确的轨道上还是有更好的方法来做到这一点,我应该尝试?

谢谢。

+2

你可能会做错事。你从哪里得到这些字符串?也许你可以把它们保存为JSON呢? – silkfire 2013-03-06 08:11:22

+0

它们是表单中已更改的字段的名称。我试图在用户更改我的表单中的值时更新多个记录中的几个字段。我正在使用JavaScript将字段名称保存到隐藏元素以获取这些元素。 – 2013-03-06 08:15:00

回答

1

正则表达式看起来是这样的:

^(\w+)(?:\[(\w+)\])+ 

那么你的比赛将包含属性名和数组键。如果按键数量不同,请使用此值来获取实际值:Using a path to an array item

+0

我最终使用了这里的链接和这个正则表达式的组合'@ ^(\ w +)(\ [([^]]。*)\])@' – 2013-03-07 05:20:17

0

您应该使用AJAX,并将内部有用的数组发送到您可以使用PHP解析的服务器。

var changed_values = [ 
         { 
         'part_of_form': 'XX', 
         'field': 2, 
         'subfield': 3 
         }, 
     ....... 
        ] 

然后在PHP中,你可以遍历它:

foreach($_POST['changed_values'] as $changed_value) { 
    ........ 
} 
+0

这正是我想要做的。 – 2013-03-07 04:34:40