Рекурсивное регулярное выражение PHP bbcode

[div="desc"][1="text1"][2="text2"][3="link3"][/div]

И это может продолжаться до предела 6. Как можно создать регулярное выражение, которое извлекает «описание», числа и тексты? Я пробовал с массивом php, но не смог.

Спасибо!


person user1392191    schedule 13.05.2012    source источник
comment
Где здесь рекурсия? и будет ли формат одинаковым для всех последующих текстов?   -  person Shubham    schedule 13.05.2012


Ответы (1)


Здесь нет рекурсии - по крайней мере, ваш пример этого не показывает. Если в вашем общем случае окажется рекурсия, регулярные выражения не будут работать; вам придется использовать парсер.

В этом случае я бы предложил сначала использовать preg_match_all с регулярным выражением типа /[([^]]+)]/ . Если вы передаете этой функции массив matches, после запуска preg_match_all matches[1] должен быть массивом, содержащим строки '[div="desc"]', '[1="text1"]' и т. д. Получив этот массив, вы можете перебрать его, используя foreach, и разбить каждую строку на =, а затем делать все, что вам нравится, с двумя частями строки, которые вы проанализировали.

person Ansari    schedule 13.05.2012