PCRE парсинг аргументов функции

Статус
В этой теме нельзя размещать новые ответы.

sartiii

Постоялец
Регистрация
17 Сен 2008
Сообщения
105
Реакции
17
Дано: есть строки с произвольными значениями, а в них могут встречаться макросы (оформленные по подобию функций) вида func("сосисочки","верблюжата, котята, бобрята",true,4)
найти такие конструкции не пробема, но беда при парсинге аргументов. Всё бы ничего, но когда один из аргументов является строкой + содержит в себя запятую, то начинается самое интересное и explode(',', $strfunc); перестаёт справляться.
Регулярки тоже крутил, но ничего хорошего не вышло. Помогайте! =)
 
Я ж написал что это макросы, а не PHP функции.
 
Дано: есть строки с произвольными значениями, а в них могут встречаться макросы (оформленные по подобию функций) вида func("сосисочки","верблюжата, котята, бобрята",true,4)
найти такие конструкции не пробема, но беда при парсинге аргументов. Всё бы ничего, но когда один из аргументов является строкой + содержит в себя запятую, то начинается самое интересное и explode(',', $strfunc); перестаёт справляться.
Регулярки тоже крутил, но ничего хорошего не вышло. Помогайте! =)

Кусок текста в студию. Телепаты в отпуске.
 
elcaste, молодец что спросил!
вот например:
бла бла бла бла бла бла бла бла бла бла бла бла бла бла бла бла бла бла func("сосисочки","верблюжата, котята, бобрята",true,4) бла бла бла бла бла бла бла бла бла бла бла бла бла бла бла ХРЯСЬ бла бла бла бла бла бла бла бла бла бла бла бла бла бла бла get(true,22,'обезьяны, кашалоты') бла бла бла бла бла
 
Выражения типо 2*(3+1) в функциях могут быть?
Если нет, то на ходишь функции и их содержиное разбираешь по регулярке
Код:
\s*(?|[^,]*?|"[^"]*?"|'[^']*?')\s*(?:,|\Z)


Добавлено через 10 минут
Хотя, сами функции тоже надо еще найти по регулярке-
Код:
func\s*\(
((?:
  (?:[^,()]*?|"[^"]*?"|'[^']*?')
  (?:,|(?=))
)*)\)
На случай, если в кавычках есть скобки.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху