0

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つ目は、半分の数の正規表現を実行するだけで済みます。しかし、どちらがより速く、より集中的でなく、そして単に使用するのがより良いかはわかりません。

何かアドバイス?

4

1 に答える 1

2

読みやすい方に進みます。それがボトルネックであることがわかった場合は、将来すぐに最適化できます(これは間違いないでしょう)。見つけた正規表現のバグのために更新する必要がある場合、読みやすいバージョンを 6 か月以内に使用できることを嬉しく思います ;)

言語には、後でコードを読みやすくするために「コメント」を残す機能があることを覚えておいてください;)

于 2012-11-18T02:37:20.823 に答える