2011-03-25 8 views
10

Necesito eliminar los corchetes "[" y "]" de $widget_text en el valor de variable a continuación y almacenar el resultado en $widget_id.¿Métodos para eliminar caracteres específicos de la cadena?

$widget_text = '[widget_and-some-text]'; 
$widget_id = ?; 

Uso preg_replace, str_replace o alguna otra cosa?

+0

respuesta de Michiel le conseguirá hecho, sino hacer que desea hacer una verificación de la cadena? –

+1

@Col. S: Gracias por los útiles consejos, sans crap ;-) –

Respuesta

39

Existen varios métodos disponibles, y en ocasiones se pueden realizar para realizar exactamente la misma tarea, como preg_replace/str_replace. Pero, tal vez desee eliminar corchetes solo desde el principio o el final de la cadena; en cuyo caso funciona preg_replace. Pero, si puede haber varios corchetes, preg_replace también puede hacer el trabajo. Pero recortar es más fácil y tiene más sentido.

preg_replace() - Elimina comenzando y los soportes traseros

$widget_id = preg_replace(array('/^\[/','/\]$/'), '',$widget_text);  

str_replace() - Esto elimina los soportes en cualquier parte del texto

$widget_id = str_replace(array('[',']'), '',$widget_text); 

trim() - recorta soportes desde el principio y el final

$widget_id = trim($widget_text,'[]') 

substr() - hace lo mismo que trim() (suponiendo que el texto del widget no incluyen los soportes de cierre dentro del texto)

$widget_id = substr($widget_text, 
        $start = strspn($widget_text, '['), 
        strcspn($widget_text, ']') - $start 
      ); 
+3

+1 para las explicaciones útiles y ejemplos de casos de uso. –

+0

@Scott B: np, acaba de figurar que ya sabía _como_ usar str_replace –

+0

Sí, en este caso podría gustarme la opción de recorte. Es trivial de cualquier manera como indica el buen Col. –

6
$widget_id = str_replace('[', '', str_replace(']', '', $widget_text)); 
+5

'$ widget_id = str_replace (array ('[', ']'), '', $ widget_text);' mejor –

+0

@Carlos: ¡Gracias! –

1

Si los soportes están siempre en primera y última posición, utilizar esto:

$widget_id = substr($widget_text, 1, strlen($widget_text)-2); 

Creo que esta es una manera más rápida ...

+1

La forma más rápida: $ widget_text = 'widget_and-some-text'; : P –

+0

Pero bromas aparte, debería ser más rápido que el equivalente preg_replace (array ('/^\ [/', '/ \] $ /'), '', $ widget_text) –

Cuestiones relacionadas