【发布时间】:2013-06-15 08:40:16
【问题描述】:
以前我一直在回显 $obj->html,但当前的项目要求检查 HTML 中是否存在 {whatever} 之类的 slug,并将其替换为其他内容。
我有两个问题。首先是这段代码比我想要的要慢:
class Foo {
function draw_content() {
$slug = "/(?<=\{).*(?=\})/";
if (preg_match($slug, $this->html, $matches)) {
foreach ($matches as $match) {
if (method_exists($this,$match)) {
$replacement = $this->$match();
$this->html = preg_replace("/\{$match\}/", $replacement, $this->html);
}
}
}
return $this->html;
} // fn
function new_releases() {
echo "new release book covers";
} // fn
} // class
有没有更好的方法来获取 slug 内容?我想正则表达式是什么减慢了速度?
第二个问题对我来说很陌生。鉴于此 $obj->html:
<p class="headline">New Releases</p>
<p>xxx{new_releases}xxxx</p>
$obj->draw_content() 处理后的输出由<?=$obj->draw_content()?>绘制
new release book covers<p class="headline">New Releases</p>
<p>xxxxxxx</p>
为什么要在前面加上 new_releases() 输出?蛞蝓不见了,但替代品不在它的位置!
【问题讨论】: