- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
function generateMessage($template, $tokens){
foreach($tokens as $key => $value){
$search[] = $key;
$replace[] = $value;
}
return str_replace($search, $replace, $template);
}
$template = "Здравствуйте, %contact%! К нам поступил запрос на восстановление пароля на сайте...";
$token['%contact%'] = 'Иван';
generateMessage($template, $token);
вместо:
sprintf("Здравствуйте, %s! К нам поступил запрос на восстановление пароля на сайте...", 'Иван');
inkanus-gray 17.07.2011 20:32 # +5
В данном конкретном примере и sprintf не нужен. Двойные кавычки в PHP автоматически интерпретируют переменные, поэтому прошёл бы и такой код:
Чем generateMessage хуже стандартного sprintf? В данном примере разницы не видно, но ведь с помощью generateMessage можно реализовать более сложные шаблоны, чем с помощью sprintf. Например, использовать переменную несколько раз или переставлять слова местами. Если я ничего не путаю, то sprintf всего лишь тупо парсит слева направо, подставляя макросы в порядке их упоминания в списке аргументов.
Vasiliy 17.07.2011 20:39 # −1
roman-kashitsyn 18.07.2011 09:23 # −2
LegionDead 18.07.2011 09:51 # −1
morozovsk 17.07.2011 21:58 # −1
эта строка лежит в файле с переводами, $contact в нём не доступен
Lure Of Chaos 17.07.2011 21:27 # 0
Nicklasos 17.07.2011 22:07 # 0
telnet 17.07.2011 22:14 # −2
Реквестирую говноконкурс, принимайте эстафету.
LegionDead 19.07.2011 09:39 # −3
Lure Of Chaos 19.07.2011 10:38 # 0
bugmenot 19.07.2011 10:51 # 0
striker 19.07.2011 15:19 # 0