哪种PHP regexp方法更好用?

时间:2012-11-18 02:24:08

标签: php regex

我正在编写一些代码来输出HTML链接,结果如下:

$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;
}

它们都返回完全相同的输出。第一个更容易阅读。第二个只需要运行一半的正则表达式。但我不确定哪一个更快,更少强度,而且更好用。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

更容易阅读。如果你发现它是瓶颈(我怀疑它将会是),你可以在未来很快对其进行优化。您会发现,由于您找到的正则表达式错误,您需要在6个月内更新它时更容易阅读;)

请记住,语言可以留下“评论”,以帮助您在以后更容易阅读代码;)