我在写一些代码来输出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