|
|
|
| Проблема вот в чём.
Достал из строки элементы вида {$text|filter}. И теперь смотрю, если filter равен, к примеру, toupper, то заменяю {$text|filter} на strtoupper($text); в большом регистре. У меня есть список всех фильтров в массиве и я просто прохожу по всем элементам которые подходят под моё рег.выражение ({$varname|filter}) и, если такой фильтр у меня есть я заменяю эту переменную на изменённую с помощью str_replace();
Правильный ли мой подход или это делается как-то по другому? К примеру функция будет иметь ввиду, как и в РНР, а потом строка обрабатывается этим фильтром с помощью eval() (который тормознутый)?
ЗЫ. да-да, пишу свой шаблонизатор :) | |
|
|
|
|
|
|
|
для: DEM
(16.11.2009 в 04:19)
| | Нет eval() - это плохая идея, вы все делаете правильно. | |
|
|
|
|
|
|
|
для: cheops
(19.11.2009 в 15:43)
| | а то, что я прохожу сначало все переменные (хранятся в массиве)в цикле и потом смотрю с помощью рег.выражений:
#\{\$'.$parametr.'(.*)(\|{1})(.+)\}#
Где $parametr - название переменой.
Или лучше сделать #\{\$(.*)(\|{1})(.+)\}# и уже потом смотреть, есть ли такая переменная и уже обрабатывать? Что будет быстрее? | |
|
|
|
|
|
|
|
для: DEM
(21.11.2009 в 08:04)
| | Лучше потестировать на большом объеме данных, если честно затрудняюсь на вскидку сказать. | |
|
|
|