2012-03-01 9 views

答えて

15

はあなたが$search文字列から()の両方を削除すると仮定ありがとう:

$search = preg_replace('/\(|\)/','',$search); 

私はこれを行うための最速の方法を使用していると思いますstrtr関数のように:

preg_replaceはあなただけ ()を交換したい場合は、その後str_replaceは数回高速である、正規表現のためですが、適切な構文である
$search = strtr($search, array('(' => '', ')' => '')); 
+0

ああ、ありがとう。それは働いた。 – Norse

+0

この場合は不要なパターンをエクスポートするために、追加のラッピング()を行う必要はありません。 –

+0

@トニー:確かに!私はそれらを削除しました。 –

0

あなたがどこにいても(または)を交換したい場合は、あなたがこのように意味

preg_replace("/\(|\)/", "", $str); 
+0

ええ、str_replaceを右端に2つ使用しなければならないでしょう。 – Norse

+1

真ですが、私は5ドルであればまだ速いと考えています:P –

+1

@トニー: 'strtr'関数は、一度にいくつかの" str_replaces "を作ることができます。私は基本的なテンプレートクラスで使用します...ループ+ str_replaceの代わりに、ただ1つのstrtr呼び出し... –

1

を使用することができますか?

$search = preg_replace('/[()]/', '', $search); 

これは、ペアリングに関係なくすべてのかっこを削除します。ここで

+2

大文字小文字を区別しない括弧? :) –

+0

これはちょうど始まりです...習慣の力。 :) – Nilpo

9

少しフィールドテストの私の結果されていますJ.ブルーニは指摘として

preg_replace("/\(|\)/", "", $str): 1.590735912323

preg_replace('/[\(\)]/', '', $str): 1.3762638568878

strtr($str, array('(' => '', ')' => '')): 0.84079194068909

str_replace("(", "", str_replace(")", "", $str)): 0.80222821235657

は最後の二つはほとんど同じです。

+0

ベンチマークに 'preg_replace( '/ [\(\)] /'、 ''、$ str);を追加し、結果をお知らせください。 –

+0

したがって、いくつかのstr_replacesは単一のstrtrより速いです...もし配列がいくつかの文字列パラメータのために避けられれば、もっと速くなければならないかもしれません... 'strtr($ str、 '()'、 '') ' - しかし、これは望ましい行動ではありません...また、いくつか置き換えて、確かにstrtrが勝つでしょう! :-) –

+0

ええ、範囲はより速く見えます。 strstrとstr_replaceはほぼ同じですが、現在のテストでは目立った違いは見当たりません。毎回上下に移動します。strstrはより洗練されたソリューションになります。 –