Foros del Web » Programando para Internet » PHP »

Expresion regular para eliminar tags html especifica

Estas en el tema de Expresion regular para eliminar tags html especifica en el foro de PHP en Foros del Web. Buenas aca a todos en Foros del Web De nuevo con una duda en cuanto a esto de las expresiones regulares, he leido unos cuantos ...
  #1 (permalink)  
Antiguo 04/10/2011, 10:01
 
Fecha de Ingreso: septiembre-2009
Ubicación: Managua
Mensajes: 128
Antigüedad: 14 años, 7 meses
Puntos: 5
De acuerdo Expresion regular para eliminar tags html especifica

Buenas aca a todos en Foros del Web

De nuevo con una duda en cuanto a esto de las expresiones regulares, he leido unos cuantos tutoriales pero necesito ayuda para afinar mi expresion.

Esta expresion regular me permite eliminar las etiquetas <strong> sin eliminar su contenido interno, incluyendo otras tags html

Código PHP:
$texto preg_replace('@<strong>|</strong>@i''',$texto); 
Ejemplo:

Código PHP:
$texto "<strong><p>Este es un contenido de prueba</p><img src="http://xxxxx" border="0" /></strong>";
$texto preg_replace('@<strong>|</strong>@i''',$texto); 
En este caso la salida es:
Cita:
<p>Este es un contenido de prueba</p><img src="http://xxxxx" border="0" />
La duda que tengo es ¿Como validar que se aplique esta expresion solamente a las etiquetas <img> entre las etiquetas strong?

Ejemplo

Código PHP:
$texto "<strong><img src="http://xxxxx" border="0" /></strong>"; 
La salida deseada es:

Cita:
<img src="http://xxxxx" border="0" />
En cambio si se aplica la funcion a esto
Código PHP:
$texto "<strong><p>Este es un contenido de prueba</p></strong>"
Que la salida se mantenga igual a la entrada, es decir:
Cita:
<strong><p>Este es un contenido de prueba</p></strong>
Saludos y gracias de antemano
  #2 (permalink)  
Antiguo 04/10/2011, 10:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresion regular para eliminar tags html especifica

Necesitas, como dices, afinar tu expresión.

Cita:
/<(strong)>\s*(<img[^>]*>)\s*<\/\\1>/
Y ahí la clave sería usar la captura \2 como reemplazo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/10/2011, 10:17
 
Fecha de Ingreso: septiembre-2009
Ubicación: Managua
Mensajes: 128
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Expresion regular para eliminar tags html especifica

Cuando dices la captura \2 a que te refieres amigo?, gracias por la respuesta.

Saludos
  #4 (permalink)  
Antiguo 04/10/2011, 10:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresion regular para eliminar tags html especifica

Entonces necesitas estudiar mas de RegExp; una captura es lo que se agrupa dentro de los paréntesis, y dichas capturas pueden ser usadas en los reemplazos.
Código PHP:
$foo 'ABDCA';
echo 
preg_replace('/(A)(.+?)\\1/''|\\2|'$foo);
// => |BDC| 
Lee lo siguiente:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 04/10/2011, 10:26
 
Fecha de Ingreso: septiembre-2009
Ubicación: Managua
Mensajes: 128
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Expresion regular para eliminar tags html especifica

He probado tu expresion regular amigo

Cuando pongo:
Código PHP:
$texto "<strong><p>Este es un contenido de prueba</p></strong>";
$texto preg_replace('/<(strong)>\s*(<img[^>]*>)\s*<\/\\1>/'''$texto);
echo 
$texto
Me imprime lo correcto
<strong><p>Este es un contenido de prueba</p></strong>

Pero cuando pongo
Código PHP:
$texto "<strong><img src="http://xxxxx" border="0" /></strong>"; 
$texto preg_replace('/<(strong)>\s*(<img[^>]*>)\s*<\/\\1>/'''$texto);
echo 
$texto
Aqui no me imprime nada, se come la etiqueta <img>

¿A qué se debe esto?

Saludos y gracias
  #6 (permalink)  
Antiguo 04/10/2011, 10:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresion regular para eliminar tags html especifica

Lee lo que te conteste antes.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 04/10/2011, 11:09
 
Fecha de Ingreso: septiembre-2009
Ubicación: Managua
Mensajes: 128
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: Expresion regular para eliminar tags html especifica

Gracias amigo, muchas gracias me has ayudado muchisimo

Saludos.

Etiquetas: especifica, expresion, html, regular, tags
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:30.