1
以前我一直在迴應$ obj-> html,但是當前的項目需要檢查像{whatever}
等slu and的HTML並將其替換爲其他內容。提高正則表達式的速度和使用preg_replace的slu 012
我有兩個問題。首先是這個代碼比我想要的要慢:
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()
輸出前置? slu is已經消失,但替代品並不在它的位置!
哇,這是waaaay更快!謝謝!對奇怪的preg_replace()行爲有何看法? – jerrygarciuh
你搖滾!我正在摸索'preg_replace_callback()'文檔。這絕對解決了我的問題! – jerrygarciuh
@jerrygarciuh:爲你感到高興。 –