2013-12-04 2 views
1

У меня есть ..tpl файл с этой строкой:умник заменить несколько значений

{$error|replace:"pno":"personal number error"} 

Мне нужно изменить так несколько значений будут заменены, вроде:

{$error|replace:"pno_error":"personal number error", "error_1":"1", "error_2":"2"} 

мне нужно сделать убедитесь, что код правильно сформирован. Как мне это достичь?

ответ

4

Подобно

{assign "find" array('pno', 'error_1', 'error_2')} 
{assign "repl" array('personal number error', 1, 2)} 
{assign "text" 'error_1 and pno and error_2 are friends'} 
{$text|replace:$find:$repl} 

кстати: dont'cha, а сделать это с помощью контроллера и в TPL файлов используют конечные значения?

EDIT

, как сделать это, чтобы заменить точное совпадение только, например, если $ текст «ПНО», а затем заменить его, но если $ текст «pnopno», то ничего не делать?

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

Что касается замены pno, а не pnopno, вам необходимо выяснить свое собственное регулярное выражение в соответствии с вашими потребностями.

{assign "text" 'error_1 and pno and error_2 are friends'} 
{$text|regex_replace:"/(\s)(pno)(\s)/":"personal number error"|regex_replace:"/(error_1)/":"1"|regex_replace:"/(error_2)/":"2"} 
+0

Спасибо, отлично работает! Теперь еще один вопрос: как заставить его заменить точное соответствие только, например, если $ text является «pno», а затем заменить его, но если $ text является «pnopno», то ничего не делать? – popkutt

+0

Это похоже на то, что вы можете изменить, просто изменив немного. –

Смежные вопросы