[PHP] printf, имена вместо чисел (ЗАКРЫТО)

kruzer25

<?php
$format = 'The %2$s contains %1$d monkeys';
echo vsprintf($format, array($num, $location;
?>

А если мне наплевать на формат (пусть всё кастуется в строку стандартным способом и я хочу выводить текст так:
<?php
$format = 'The %location% contains %num% monkeys';
echo vsprintf($format, array('num' => $num, 'location' => $location;
?>

?
Писать свою функцию - довольно геморройно, тут простыми регулярными выражениями не обойтись, надо идти по строке и складывать результат в другую строку (чтобы не получилось гадости, если у нас $location содержит подстроку "%num%").
А есть ли что-нибудь готовое?

iakobi91

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

kruzer25

Локализация.
Как бы гораздо удобнее, если в локализационных файлах фразы вида "Добро пожаловать, %username%, последний раз вы были в онлайне %lastonline%", чем "Добро пожаловать, %s$2, последний раз вы были в онлайне %s$1".

artimon

<?php
$s = 'some %a% and %b%.';
$r = array('a' => 'shit %b%', 'b' => 'test');
$z = preg_replace('!%(\w+)%!e', '$r["\1"]', $s);
var_dump($z);
?>

string(23) "some shit %b% and test."

kruzer25

:o
Где же были мои глаза... :crazy:
Оставить комментарий
Имя или ник:
Комментарий: