У меня практически нет опыта в regx, но я стараюсь изо всех сил.
У меня есть такая строка:
$fString = "Name=Sök,Value=2,Title=Combine me,Options=[Item1=1,Item2=2,Item3=3]";
Я хочу получить массив, похожий на этот:
Array[0] = "Name=Sök"
Array[1] = "Value=2"
Array[2] = "Title=Combine me"
Array[3] = "Options=[Item1=1,Item2=2,Item3=3]"
Что мне удалось сделать до сих пор:
preg_match_all("/[^,]*[\w\d]*=[^,]*/",$fString,$Data);
Но я не могу понять, как исправить последний «вариант».
Array ( [0] => Array ( [0] => Name=S�k [1] => Value=2 [2] => Title=Combine me [3] => Options=[Item1=1 [4] => Item2=2 [5] => Item3=3] ) )
... и почему результат является массивом внутри массива?!?
[EDIT]
Полагаю, мне нужно объяснить всю идею того, что я здесь пытаюсь сделать, я не уверен, что я на правильном пути.
Я создал несколько классов, в которых я храню все «постоянные» переменные в массиве. У меня есть функция, которая сериализует этот массив, чтобы я мог храниться в базе данных.
Я знаю все о функции serialize (), но я делаю некоторую фильтрацию, поэтому я не могу использовать ее как есть, и я также предпочитаю сделать ее более читаемой для ручного редактирования. Этот массив может иметь вложенные массивы внутри, которые должны быть сохранены. Когда я читаю все это из базы данных, исходный массив должен быть создан снова.
У меня все это работало с командой eval (), но я столкнулся с проблемой, когда я вложил массивы из-за того, что символы "или" разбивали основную внешнюю строку. Поэтому этот подход был попыткой сериализации всего без вложенных строк необходимо сохранить.
Так что, если я могу решить вложенные данные с помощью preg_match_all, я там, в противном случае мне нужно найти другое решение.
Я полагаю, что необходимо также экранировать данные, такие как, и []