2013-03-06 131 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