Foros del Web » Programando para Internet » PHP »

Ayuda con expresión regular...

Estas en el tema de Ayuda con expresión regular... en el foro de PHP en Foros del Web. Hola, que tal?? Veréis, tengo un código HTML en una cadena, de la siguiente forma: Código PHP: $cadena  =  "<table>  <tr>     <!-- comentario --> </tr>   </table>   <!-- otro comentario -->"  y lo que quiero es ...
  #1 (permalink)  
Antiguo 09/10/2006, 08:02
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 19 años, 6 meses
Puntos: 1
Ayuda con expresión regular...

Hola, que tal??

Veréis, tengo un código HTML en una cadena, de la siguiente forma:

Código PHP:
$cadena "<table>  <tr>     <!-- comentario --> </tr>   </table>   <!-- otro comentario -->" 
y lo que quiero es eliminar los comentarios de la cadena, de forma que quede así:

Código PHP:
$cadena "<table>  <tr>      </tr>   </table>   " 
Lo intento de la siguiente forma:

Código PHP:
$cadena ereg_replace("<!--.*-->","",$cadena); 
Pero lo que obtengo es lo siguiente:
Código PHP:
<table>  <tr>     <br
Es decir, me ha eliminado lo que hay entre el primer y último comentario...

Alguien me podría echar una manita con esto?? Gracias!!
  #2 (permalink)  
Antiguo 09/10/2006, 08:15
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Creo que el patrón debería ser así:
$search='/\<!--.*?--\>/is';
  #3 (permalink)  
Antiguo 09/10/2006, 08:32
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 19 años, 6 meses
Puntos: 1
No funciona :(

Gracias de todas formas.
  #4 (permalink)  
Antiguo 09/10/2006, 11:05
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Esto funciona:
Código PHP:
<?php 
$cadena 
"<table>  <tr>     <!-- comentario --> </tr>   </table>   <!-- otro comentario -->" 
$cadena =preg_replace('/\<!--.*?--\>/is',"",$cadena);  
echo 
$cadena;
//devuelve: <table>  <tr>      </tr>   </table> 
?>
  #5 (permalink)  
Antiguo 09/10/2006, 11:19
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Cita:
Iniciado por Panino5001 Ver Mensaje
Esto funciona:
Código PHP:
<?php 
$cadena 
"<table>  <tr>     <!-- comentario --> </tr>   </table>   <!-- otro comentario -->" 
$cadena =preg_replace('/\<!--.*?--\>/is',"",$cadena);  
echo 
$cadena;
//devuelve: <table>  <tr>      </tr>   </table> 
?>
Sólo una observación, en donde pones echo $cadena; me parece que debería de ser:

echo htmlspecialchars($cadena);

Suerte
  #6 (permalink)  
Antiguo 09/10/2006, 11:23
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Eso depende de si quiere que el navegador lo muestre como html o no, pero sí, es una buena acotación. Gracias!
  #7 (permalink)  
Antiguo 09/10/2006, 13:25
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 19 años, 6 meses
Puntos: 1
Ok! si que funciona, al principio no me funcionaba porque yo usaba el patrón con la función ereg_replace y después me di cuenta que tu usabas preg_replace...

Por cierto, ¿por qué is al final del patrón?

Respecto al comentario de Erikfrancisco, en este caso da igual, la cuestión era que me quitara los comentarios, pero viene bien saber que existe esa función por si algún dia hay que usarla

Muchas gracias a los dos!
  #8 (permalink)  
Antiguo 09/10/2006, 14:58
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Aquí te dejo un enlace que explica bien los modificadores:
http://www.ignside.net/man/php/regex.6.php
Me alegra que te haya servido
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 21:55.