2013-04-18 3 views
-1

Я видел, что в системе используется метод, который вы вводите в свой текст %{variable_name}% (скажем, хранить в базе данных или отправлять массовую электронную почту), а также на странице загружает, находит %{variable_name} и заменяет его еще одним фрагментом кода/строки.PHP-скрипт, который найдет замену% {variable_name}%

Например, при отправке массовой рассылки в список рассылки: Hello %{name}%, это письмо .... и при нажатии кнопки «Отправить» оно отправит электронное письмо, за исключением того, что оно будет ... «Привет, Джон Доу, это email "...

Я искал google и не могу найти его, потому что я действительно не знаю, как его называют. Я только что видел это в коде, и в настоящее время я пишу код, который был бы чрезвычайно полезен.

Если кто-то может сказать мне, что его зовут, что искать, или пример того, как его реализовать, это было бы фантастически.

(и если я ставлю неправильные тег в этом, пожалуйста, измените на правильные)

+0

Вы можете просто использовать str_replace для замены тегов на значение , –

+1

[Templating engine] (http://en.wikipedia.org/wiki/Template_engine_ (web)). –

ответ

2

я успешно использую этот подход:

$message = str_replace('[NAME]', $name, $message); 

Так что [NAME] в, например, массовая электронная почта заменяется содержимым $name

Если вы предпочитаете синтаксис, потом %{NAME}% заменяется содержимым $name по:

$message = str_replace('%{NAME}%', $name, $message); 

Вы можете повторить его столько раз, сколько вы хотите, что вы хотите добавить конкретную ссылку и адрес электронной почты:

$message = str_replace('%{NAME}%', $name, $message); 
$message = str_replace('%{LINK}%', $link, $message); 
$message = str_replace('%{EMAIL}%', $email, $message); 

Ссылка: http://php.net/manual/en/function.str-replace.php

+0

Итак, скажем, если бы я захотел, чтобы я назвал% {name}%, я бы ввел замену строки так же, как ваш, или это будет '$ message = str_replace ('% {NAME}%', $ name, $ message) ; ' – KDJ127

+0

Да, конечно, используйте синтаксис кода, который вы предпочитаете! – jtheman

+0

Вы удивительны .. Я действительно собирался спросить о нескольких, когда увидел свое редактирование. Большое вам спасибо за вашу помощь. – KDJ127

1

Я написал класс для вас:

class templatevars{ 
    private static $vars=array(); 
    public static function set($var,$val){ 
     self::$vars["%{".$var."}%"]=$val; 
    } 
    public static function replace($text){ 
     return str_replace(array_keys(self::$vars),array_values(self::$vars),$text); 
    } 
} 

Использование:

templatevars::set("varname","text to insert"); 
templatevars::set("varname2","other text to insert"); 
echo templatevars::replace("First: %{varname}% Second: %{varname2}%"); 

Если вы хотите использовать несколько Заменители, удалите все статические классификаторов из класса, а также:

$replacer_1=new templatevars(); 
$replacer_1->set("var","text"); 
$result=$replacer_1->replace($text_source); 
+0

В чем разница между тем, что делает ваш, и базовым str_replace? – KDJ127

+0

У шахты есть два преимущества: -Сохранить пары переменных/значений для повторного использования -Увеличена несколько лучшая производительность с большим количеством пар var/val, поскольку она вызывает str_replace только один раз независимо от числа пар var/val – Dodo

+0

Если вы есть время, можете ли вы рассказать мне, как я буду использовать ваш класс, чтобы сделать следующее. Предположим, у меня есть средство массовой почты, и я хочу запросить всех людей, которые находятся в нашем списке рассылки, и отправить им это сообщение, 'Hello% {first name}%, это массовая почта, где он ищет базу данных профилей, в которой список рассылки = да, а затем отправляет им электронное письмо с их именем в нем ... Я знаю, как делать электронную почту и запрос, но как бы я включил ваш класс в это? – KDJ127

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