AMD, к сожалению, что бы понять где здесь ошибка, нужна понять какой результат вы ожидаете получить. После этого было бы здорово увидеть значения всех переменных участвующих в процессе - у вас же eval всё-таки, это важно! Вы включили отображение ошибок? Обычно при наличии синтаксических ошибок в коде который эвалится появляется Parse error с указанием строки с ошибкой. Ну и наконец первый вопрос который возникает при виде eval для шаблонизатора - зачем он нужен? Вы не пробовали обойтись более традиционнами способами str_replace / preg_replace ?