2011-01-06 6 views
11

como el título dice que tengo una cadena como esta:eliminar <br> 's desde el final de una cadena

$string = "Hello World<br>hello world<br><br>"; 

Ahora quiero para deshacerse de los <br> s al final de esta cadena por lo que parece de esta manera:

$string = "Hello World<br>hello world"; 

he intentado esto:

preg_replace('/^(<br>)*/', "", $string); 

pero esto no funcionó. tal vez alguien sepa la expresión regular correcta.

saludos Peter

+0

nota Su pregunta dice " ahora quiero deshacerme de la "s" ... poner el '
' en los palos de atrás ('\' ') para que se muestre :) – NickAldwin

+0

No está nada claro lo que quieres. ¿Desea que '
' 's dentro de la cadena se convierta a '\ n' (nueva línea) y'
'' s al final de la cadena que se va a pelar? Entonces, en su ejemplo, la cadena resultante debería ser '" Hello World \ nhello world "'? Si es así, probablemente necesite dos regexp-reemplaces, uno para el caso de nueva línea y otro para el caso de tira. Por favor, edite la pregunta para ser más específico. –

+0

no la cadena resultante debería verse así: "Hello World
hello world". la solución de NickAldwin y Alex Howansky hace el tic. gracias de nuevo. –

Respuesta

15

Estás cerca, utilizas^al comienzo de la expresión regular, lo que significa "unir el inicio de la cadena". Desea $ al final, lo que significa, "Unir el final de la cadena".

preg_replace('/(<br>)+$/', '', $string); 
+0

gracias. ¡esto funciona! –

+0

Eso no funcionará para

sln

+0

Y para, ''
, esto parece funcionar para mí: 'preg_replace ('/ (
) + $ /', '', $ cadena);' –

0

Try preg_replace('/(<br>)+$/', "", $string);

EDIT: Vaya, esto debería funcionar ahora.

+0

gracias, también. bonito. –

10

Sólo por cualquier otra persona que se hagan estas, como si, en busca de una manera de eliminar cualquier etiqueta de todas descanso de la final de la cadena, incluyendo:

<br> <br/> <br /> <br    /> <br  > 

utilicé:

$string = preg_replace('#((){0,}<br({0,})(/{0,1})>){1,}$#i', '', $string); 

con gran efecto. Esto también los despojará, si tienen espacios en blanco entre cada uno. Tendrá que ajustar para cualquier \ n \ r etc., si eso es lo que necesita.

+0

Gracias! Tu solución ha funcionado muy bien para mí, pero también necesito que los desvisté desde el principio del hilo, ¿sabes cómo puedo hacerlo? –

+0

No he tenido tiempo para probarlo, pero esto debería eliminarlos del comienzo de una cadena: $ string = preg_replace ('#^(() {0,}
) {1,} # i ',' ', $ string); –

2

Las expresiones regulares son de gran alcance, pero creo que este caso es más sencillo, rtrim debería funcionar

$string = rtrim($string,'<br>'); 
+6

Esto no hace lo que crees que hace. Eliminará _any_ de los caracteres '<', 'b',' r', o '>', en cualquier orden, desde el final de la cadena, si está presente, por lo que 'Me gusta el ruibarbo
' se convertirá en 'Me gusta rhuba' y '' se convertirán en ' jonathanm

+0

Gracias por el consejo útil –

Cuestiones relacionadas