Задача замены плейсхолдеров, или так называемых меток-заполнителей, в строке на соответствующие элементы ассоциативного массива может быть решена несколькими способами, но, на мой взгляд, самый элегантный способ - при помощи preg-а (регулярных выражений).
Допустим, у нас есть ассоциативный массив с подстановками $placeholders, и строка $str c метками-заполнителями вида {var_name}, в которой нужно произвести замену на соответствующие значения из массива. Решение на PHP будет выглядеть следующим образом:
$placeholders = array("name"=>"User", "link"=>"http://webaurum.blogspot.com");
$str = "Hello {name}, you are here {link}";
echo preg_replace('~\{\w+\}~e', '@$placeholders$0', $str);
echo preg_replace( '/\{(\w+)\}/e', '@$placeholders["\\1"]', $str);
Две последние строки абсолютно идентичны по функциональному назначению, я их просто привёл для примера, может кому-то будет понятнее второй вариант. Обе последние строки вернут результат:Hello User, you are here http://webaurum.blogspot.comРеализация работает быстро и элегантно, использую во многих собственных проектах.
Не знал, что можно массив передать, круто.
ОтветитьУдалитья обычно пользовался:
preg_replace("/($topgroup)$/si","<span class=\"topg\">\\1</span>",$kadabra);
да, оно так кошерно получается
ОтветитьУдалить