оптимизация кода функции

AlexDru

Новичок
День добрый, требуется оптимизировать функцию шаблонитизатора (формат и идею самих шаблонов менять нельзя).

Идея следующая – есть 2х мерный массив данные, из которого нужно вывести по шаблону. Все было бы просто, но каждый элемент в строке может иметь свою обработку параметры которой задаются так же в шаблоне (но при этому остальные данные из аналогичного элемента из другой строки выводится так же). В шаблоне каждый элементы строки обозначается тегом.

Тег может быть одинарный, или парный (в последнем случае требуется манипулировать данными внутри). Так же может иметь параметры. Кроме того, в шаблоне могут быть теги которые будут обработаны другими скриптами. Мы обрабатываем только заявленные нами теги.

Пример шаблона:
PHP:
{tag_1}  {tag_2:relax} {tag_3} {tag_4}   
{tag_4 par="x"} {tag_5 par="x" par2="2"} {tag_1:agree} {tag_3 hello="world"} subdata {other} {tag_4} {/tag_3}
tag_1, tag_2, tag_3, tag_4, tag_5 (и т.д.)- теги, их название известны заранее ( мы передаем ее в функцию в виде массива Array("tag_1", "tag_2", "tag_3" ...))
par="x" par2="2" – parameters (возможны разные, количество в одном блоке не ограниченно)
{other} – tag который нам трогать не надо
:relax – subtag (возможны разные, заранее названия не известны)
subdata – данные между парными тегами (закрывающий тег со слешем)


В приложении func.txt это работающая функция выполняющая нужные манипуляции, но как по мне, она не оптимальная. По ее алгоритму мы обрабатываем шаблон, ищим тег, разбиваем его на составляющие, вытаскиваем параметры и так тег за тегом. Повторяем для всех строк в нашем массиве.

Бюджет: $60 (обсуждается).

p.s. если что-то не понятно или информации недостаточно - спрашивайте, я отвечу.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ну, у тебя там 2 большие регулярки в цикле
оптимизация синтаксического анализатора обычно делается через автоматы, но это неделю работы, при бюджете $60 лучше забей
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ну, сколько стоит неделя разовой работы программиста, который получает, допустим 2-3 тысячи в месяц?
думаю, 500-1000 долларов
 
Сверху