以前我一直在回应 $obj->html 但当前的项目要求检查 HTML 中是否存在类似 slug{whatever}
并用其他内容替换这些内容。
我有两个问题。首先是这段代码比我想要的要慢:
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()
预先输出输出?蛞蝓不见了,但替代品不在它的位置!