Intereting Posts

Эффективный способ замены заполнителей переменными

Возможный дубликат:
заменить несколько заполнителей php?

У меня есть .txt-файл, работающий как шаблон. Я сделал несколько заполнителей, таких как {{NAME}} и я хотел бы заменить их на переменные. Каков наиболее эффективный способ сделать это? Имейте в виду, что у меня около 10 таких заполнителей в моем шаблоне.

Нет лучшего способа, чем str_replace?

str_replace не только уродлива, но и вяло, если вам нужно заменить десять переменных (выполняет двоичный поиск и начинается с начала для каждой альтернативы).

Скорее используйте preg_replace_callback , либо перечисляя сразу все 10 переменных, либо используя поздний поиск:

 $src = preg_replace_callback('/\{\{(\w+)}}/', 'replace_vars', $src); # or (NAME|THING|FOO|BAR|FIVE|SIX|SVN|EGT|NNE|TEN) function replace_vars($match) { list ($_, $name) = $match; if (isset($this->vars[$name])) return $this->vars[$name]; } 

Как насчет strtr

 $trans = array( '{{NAME}}' => $name, "{{AGE}}" => $age, ...... ); echo strtr($text, $trans); 

Какая уродливость в str_replace() ?

 function replace_vars($string) { $vars = array('NAME'=>'Name', 'VAR2'=>'Value 2', 'VAR3'=>'Value 3'); $names = array(); foreach($vars as $name=>$var) { $names[] = '{{'.$name.'}'; } return str_replace($names, $vars, $string); } 

или

 function replace_vars($string) { $vars = array('{{NAME}}'=>'Name', '{{VAR2}}'=>'Value 2', '{{VAR3}}'=>'Value 3'); return str_replace(array_keys($vars), $vars, $string); }