我在寫一些代碼來輸出HTML鏈接,它弄成這個樣子:哪個PHP regexp方法更好用?
$search = array('/{LINK([^.]*)\.([^.]*)\.([^}]*)}/', '/{ILINK([^.]*)\.([^.]*)\.([^}]*)}/');
$replace = array('<a href="$1.php?$2">$3</a>', '<a class="ilink" href="$1.php?$2">$3</a>');
$foo = preg_replace($search, $replace, $foo);
但後來我看了所有的重複,我試圖找到一個「更好」的方法。所以我結束了這個:
$foo = preg_replace_callback ('/{(I?)LINK([^.]*)\.([^.]*)\.([^}]*)}/', '_rep', $foo);
function _rep($m) {
$x = ' href="'.$m[2].'.php?'.$m[3].'">'.$m[4].'</a>';
if($m[1]) { return '<a class="ilink"'.$x; }
return '<a'.$x;
}
他們都返回完全相同的輸出。第一個更容易閱讀。第二個只需要運行一半的正則表達式。但我不確定哪一個更快,更少密集,並且使用起來更好。
有什麼建議嗎?
簡介它..... –
嗯。必須弄清楚那是什麼以及如何去做,但它給了我一個答案。謝謝! – druidic
個人而言,我更喜歡preg_replace_callback()在這種情況下,因爲它更靈活。 – cleong