2012-03-01 1 views

ответ

15

Предполагая, что вы хотите, чтобы удалить как ( и ) из $search строки:

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

Я думаю, что самый быстрый способ сделать это с помощью strtr функция, как это:

$search = strtr($search, array('(' => '', ')' => '')); 
+0

Ах, спасибо. Это работало. – Norse

+0

Вам не нужна дополнительная упаковка '()' она предназначена для экспорта шаблона, который в этом случае не нужен. –

+0

@ Тони: действительно! Я их удалил. –

0

Это правильный синтаксис, хотя preg_replace предназначен для регулярных выражений, если вы просто хотите заменить (), тогда str_replace будет в два раза быстрее.

Если вы хотите заменить ( или ) где бы они ни находились, вы можете использовать

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

Да, но вам придется использовать str_replace дважды, хотя правильно, по одному для каждой из круглых скобок? – Norse

+1

Правда, но я ставлю 5 $, он все равно будет быстрее: P –

+1

@Tony: функция 'strtr' может сделать несколько« str_replaces »сразу. Я использую его в базовом классе шаблонов ... вместо loop + str_replace, только один вызов strtr ... –

1

Вы имеете в виду, как это?

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

Это разделит все круглые скобки независимо от их сопряжения.

+2

круглые скобки с учетом регистра? :) –

+0

Обычно это только начало ... сила привычки. :) – Nilpo

9

Вот мои результаты теста мало поля:

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 будет более изящным решением. –

 Смежные вопросы

  • Нет связанных вопросов^_^