Foros del Web » Programando para Internet » PHP »

Expresión regular para eliminar comentarios

Estas en el tema de Expresión regular para eliminar comentarios en el foro de PHP en Foros del Web. Hola gente :) Tengo una expresión regular que no sé como hacerla funcionar bien. Os comento: Quiero eliminar los comentarios de un css, por lo ...
  #1 (permalink)  
Antiguo 10/03/2010, 14:40
oom
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santiago de Compostela
Mensajes: 61
Antigüedad: 18 años, 10 meses
Puntos: 0
Expresión regular para eliminar comentarios

Hola gente :)
Tengo una expresión regular que no sé como hacerla funcionar bien. Os comento:
Quiero eliminar los comentarios de un css, por lo cual tengo que eliminar cualquier cosa que esté entre "/*" y "*/". Lo hice con este código:

$css = preg_replace('|/\*[^(\*/)]*\*/|', '', $css);

El problema es que no sé como se puede hacer una negación (^) de más de un caracter ya que si un comentario tiene una barra o un asterisco dentro quiero que se lo salte porque puede haber esos caracteres dentro de un comentario sin estar juntos.

O sea, así me funciona cuando tengo un comentario del tipo:
/* estilos para imágenes */

pero no me funciona cuando tengo alguno de esos dos caracteres dentro:
/* estilos para imágenes/videos */

Si me podeis ayudar os lo agradecería un montón.
Gracias.
  #2 (permalink)  
Antiguo 10/03/2010, 15:06
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 12 años, 9 meses
Puntos: 334
Respuesta: Expresión regular para eliminar comentarios

ando buscando exactamente lo mismo desde hace ya bastante tiempo
y la unica respuesta que e obtenido es

chat entre persona x y hidek1...
Cita:
hidek1: como puedo negar palabras completas con regex
persona x: no se puede ¬¬..

fin de comberzacion.
asi que si alguien tiene alguna respuesta para eso.. me serviría de mucho también

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 10/03/2010, 15:37
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 13 años
Puntos: 66
Respuesta: Expresión regular para eliminar comentarios

Prueva con esto a ver que tal:


Código PHP:
<?php
$cadena 
"/* estilos para imágenes/videos */ esto si se imprime";
$patron "/*[^/]*/";
$cadena_nueva eregi_replace($patron""$cadena);
echo 
"$cadena_nueva";
?>
Saludos
__________________
Tu álbum de cromos online!!
  #4 (permalink)  
Antiguo 10/03/2010, 15:38
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 12 años, 9 meses
Puntos: 334
Respuesta: Expresión regular para eliminar comentarios

Deprecated: Function eregi_replace() is deprecated
=)
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 10/03/2010, 15:44
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 13 años
Puntos: 66
Respuesta: Expresión regular para eliminar comentarios

Cita:
Iniciado por Hidek1 Ver Mensaje
Deprecated: Function eregi_replace() is deprecated
=)
Mejor?

Código PHP:
<?php
$cadena 
"/* estilos para imágenes/videos */ esto si se imprime";
$patron "/*[^/]*/";
$cadena_nueva ereg_replace($patron""$cadena);
echo 
"$cadena_nueva";
?>
__________________
Tu álbum de cromos online!!
  #6 (permalink)  
Antiguo 10/03/2010, 15:46
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 12 años, 9 meses
Puntos: 334
Respuesta: Expresión regular para eliminar comentarios

Deprecated: Function ereg_replace() is deprecated

jaja.. todas esas funciones ya no se usan =) lee sobre PCRE..!

ahora para tu problema puede servirte esto

Código PHP:
Ver original
  1. <?php
  2. $cadena = "texto1 /* comen / tario1 */ texto2 /* comen / tario2 */ texto3";
  3. $cadena_nueva = preg_replace('@/\*(.*)\*/@Us', '', $cadena);
  4. echo $cadena_nueva;
  5. ?>

aunque para el mio no sirve ToT
ojala alguien responda como se puede lograr la negacion de palabras :P

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #7 (permalink)  
Antiguo 10/03/2010, 15:57
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 13 años
Puntos: 66
Respuesta: Expresión regular para eliminar comentarios

Cita:
Iniciado por Hidek1 Ver Mensaje
Deprecated: Function ereg_replace() is deprecated

jaja.. todas esas funciones ya no se usan =) lee sobre PCRE..!
Pues no sabiá que estaban tan desfasadas, la verdad que tiré de manual y pasé por alto el preg_replace().

Gracias por la info
__________________
Tu álbum de cromos online!!
  #8 (permalink)  
Antiguo 10/03/2010, 16:03
oom
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santiago de Compostela
Mensajes: 61
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Expresión regular para eliminar comentarios

Gracias Hidek1, tu código funciona perfectamente. No se me ocurrió lo de usar los modificadores al final de la expresión. :)
  #9 (permalink)  
Antiguo 20/04/2013, 19:29
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.985
Antigüedad: 18 años, 5 meses
Puntos: 22
Respuesta: Expresión regular para eliminar comentarios

Cita:
Iniciado por Hidek1
para tu problema puede servirte esto
Código PHP:
<?php
$cadena 
"texto1 /* comen / tario1 */ texto2 /* comen / tario2 */ texto3";
$cadena_nueva preg_replace('@/\*(.*)\*/@Us'''$cadena);
echo 
$cadena_nueva
?>
Espero que Hidek1 aún este en FDW.

Sé que es un POST de 36 meses atrás, pero sucede que no debe cerrarse por que la solución tiene fallo.

Si por favor alguien colabora con una expresión mejorada.

Yo escribí esta:
Código PHP:
$css='h2{
    color:#aa0000;
    text-shadow:#aa0000 1px 1px 2px;
/* W3C no acepta esto pero funciona con IE
filter:/*progid:DXImageTransform.Microsoft.dropShadow(color=#000,offX=99,offY=99)*/
progid:DXImageTransform.Microsoft.Alpha(opacity=99)
    progid:DXImageTransform.Microsoft.Blur(pixelradius=1.4,enabled=\'true\');
    /*font-size:5em;*/
*/
    font-size:12em;
    }
    .perdido{
    /* perdido o cualquier otro estilo se pierde... */
    color:#fff;
    }
'
;

echo 
'<pre>'.preg_replace('+/\*.*\*/+s','',$css); 
Pero pueden ver que al iguál que la del moderador Hidek1 falla con el CSS que requiero descomentar.

Aún agregando el U, retorna la misma salida que la RegEx de Hidek1.

Espero no me condenen a trabajos forzados por reabrir... xD

Alguien tiene la expresión regular para eliminar comentarios?

Etiquetas: comentarios, eliminar, regular
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 05:43.