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;
}
どちらもまったく同じ出力を返します。最初のものは読みやすいです。2つ目は、半分の数の正規表現を実行するだけで済みます。しかし、どちらがより速く、より集中的でなく、そして単に使用するのがより良いかはわかりません。
何かアドバイス?