2009-04-23 7 views
9

¿Cómo puedo cortar la cadena antes '(' firmar con phpcadena corta antes de un símbolo con php

Por ejemplo: $ a = "abc diciembre g (oro)";

¿Cómo puedo cortar la cadena de convertirse en apenas "abc diciembre g" ??

me trataron de utilizado esta strstr ($ a, '(', true) pero el error de visualización

Respuesta

21

Se podría hacer esto, usando explode:.

list($what_you_want,) = explode('(', $str, 2); 

O también se podría hacer esto, usando substr y strpos:

$what_you_want = substr($str, 0, strpos($str, '(')); 

La razón por la que tiene el error utilizando strstr se debe a que el último argumento no está disponible a menos que tenga PHP 5.3.0 o posterior.

+1

Usted ni siquiera necesita una variable $ basura : list ($ what_you_want,) = explode ('(', $ str, 2); funciona también – hbw

+0

de hecho lo hace. fijo. –

+0

Además, dijo strstr ($ str, '(', true); no funciona, así que supongo que no tiene 5.3.0 ... – hbw

5
$a=substr($a, 0, strpos($a, '(')); 
1

El uso de este trozo de código es de hecho una buena solución:

$what_you_want = substr($str, 0, strpos($str, '(')); 

Sin embargo, me gustaría señalar el hecho de que va a cortar su cadena en la primera aparición de "(". si acaso se quiere cortar que en la ocurrencia de ÚLTIMA "(", se debe utilizar

$what_you_want = substr($str, 0, strrpos($str, '(')); 

me pareció que era a menudo el caso cuando el desguace contenido hTML, por ejemplo, (a causa de las etiquetas anidadas).

Saludos, Joan

2

¿Qué tal strstr:

$topic = strstr('Some topic :: part to exclude', '::', TRUE);

continuación

$topic = Algunas tema

Editar: derecho ... 5.3+ solamente

Cuestiones relacionadas