用变量替换占位符的有效方法

Opt*_*ime 4 php

可能重复:
用php替换多个占位符?

我有一个.txt文件作为模板工作.我已经制作了几个占位符{{NAME}},我想用变量替换它们.最有效的方法是什么?请记住,我的模板中有大约10个占位符.

有没有比str_replace更好的方法?

xda*_*azz 15

怎么样strtr

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


mar*_*rio 7

str_replace 如果你需要替换十个变量,那么不仅是丑陋的,而且还是迟缓的(二元搜索是从每个替代的开头开始).

而是使用a 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];
}
Run Code Online (Sandbox Code Playgroud)

  • 那么,在提高性能时,你应该看看实际的基准,而不是做出推测;) - PCRE经过高度优化,可以搜索替代品.str_replace在内部使用循环.'正则表达总是比较慢'是这里最误导的模因.没有等待,第二多. (5认同)