2013-03-06 2 views
1

У меня есть строка, которая содержит собственности и ключевых значений, чтобы получить доступ к значению на объекте ..РНР строка для ключей массива

Например, строка «property_name [ключ1] [ключ2] [ключ3]» , который относится к $obj->property_name[key1][key2][key3]

Я пытаюсь разобрать строку с регулярным выражением, но все мои попытки были напрасны.

До сих пор мое регулярное выражение выглядело так, но оно не получит key2. ^(\w+)\[([^\]]+)\](?:(\[([^\]]+)\])+)

Я нахожусь на правильном пути или есть лучший способ сделать это, что я должен попробовать?

Спасибо.

+2

Вы, вероятно, делаете что-то неправильно. Откуда у вас эти строки? Может быть, вы можете сохранить их как JSON? – silkfire

+0

Это имена полей в форме, которые были изменены. Я пытаюсь обновить несколько полей в нескольких записях, когда пользователь меняет значение из моей формы. Я использую javascript для сохранения имен полей для скрытого элемента для их получения. –

ответ

1

Регулярное выражение может выглядеть следующим образом:

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

Тогда ваши матчи будут содержать имя свойства и ключи массива. Если количество ключей варьируется, используйте это, чтобы получить фактическое значение: Using a path to an array item

+0

В итоге я использовал комбинацию ссылки и это регулярное выражение '@^(\ w +) (\ [([^]]. *) \]) @' –

0

Вместо этого вы должны использовать AJAX и отправить полезный массив с объектами внутри сервера, которые вы можете проанализировать с помощью PHP.

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

Тогда в PHP вы можете цикл над ним:

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

Это именно то, что я пытаюсь сделать. –

Смежные вопросы