2012-03-01 22 views

Respuesta

15

Suponiendo que desea eliminar tanto ( y ) del $search cadena:

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

Creo que la forma más rápida de hacerlo es usando el strtr función, como esto:

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

Ah, gracias. Lo tengo trabajando. – Norse

+0

No necesita el envoltorio adicional '()' para exportar el patrón, que en este caso no es necesario. –

+0

@Tony: de hecho! Los he eliminado. –

0

Esa es la sintaxis correcta, aunque preg_replace es para expresiones regulares, si solo quiere reemplazar () entonces str_replace es un par de veces más rápido.

Si desea reemplazar o () donde quiera que estén, se puede usar

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

Sí, pero tendría que usar str_replace dos veces, ¿correcto, uno para cada uno de los paréntesis? – Norse

+1

Cierto, pero apuesto a que 5 $ aún sería más rápido: P –

+1

@Tony: la función 'strtr' puede hacer varios" str_replaces "a la vez. Lo uso en una clase básica de plantillas ... en lugar de loop + str_replace, solo una llamada strtr ... –

1

Te refieres a esto?

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

Esto eliminará todos los paréntesis sin tener en cuenta el emparejamiento.

+2

¿paréntesis insensible a mayúsculas y minúsculas? :) –

+0

Por lo general, esto es solo el comienzo ... la fuerza del hábito. :) – Nilpo

9

Aquí están mis resultados de un pequeño ensayo de campo:

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

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

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

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

Los dos últimos son casi idénticos como se ha señalado J. Bruni.

+0

Agregue esto al benchmark: 'preg_replace ('/ [\ (\)] /', '', $ str);' - y háganos saber los resultados. –

+0

Entonces, un par de str_replaces es más rápido que un strtr simple ... si el conjunto se puede evitar a favor de un par de parámetros de cadena, quizás debería ser más rápido ... 'strtr ($ str, '()', '') '- pero este no es el comportamiento deseado ... además, teniendo varias sustituciones, ¡ciertamente strtr ganaría! :-) –

+0

Sí, la gama parece más rápida. strstr y str_replace son casi lo mismo, no encuentro una diferencia notable en la prueba actual, suben o bajan cada vez ... strstr sería una solución más elegante. –

Cuestiones relacionadas