Foros del Web » Programando para Internet » PHP »

Ayuda, expresión regular

Estas en el tema de Ayuda, expresión regular en el foro de PHP en Foros del Web. Hola amigos soy nuevo en el foro y tengo un problema con una expresión regular, lo que intento hacer es eliminar comentarios de línea de ...
  #1 (permalink)  
Antiguo 20/11/2010, 17:02
 
Fecha de Ingreso: noviembre-2010
Mensajes: 47
Antigüedad: 13 años, 5 meses
Puntos: 2
Pregunta Ayuda, expresión regular

Hola amigos soy nuevo en el foro y tengo un problema con una expresión regular, lo que intento hacer es eliminar comentarios de línea de javaScript con PHP y el javascript está embebido dentro de un HTML, en la red encontré unas cuantas expresiones pero no se acomodan a lo que busco porque éstas también eliminan url's del tipo http://, por lo que decidí hacer una propia :)

La situación es la siguiente, si tengo algo como esto:

Código:
$codigo = '<script type="text/javascript">
                     function algo(){//Esto es para algo
                         //acciones acá
                     }  
                     document.location.href = "http://www.algunsitio.com";
                 </script>';

$linea_unica = '[[^:](//.*)]';

$codigo = preg_replace($linea_unica, '', $codigo);
El resultado es el siguiente:

Código:
$codigo = '<script type="text/javascript">
                     function algo()

                     }  
                     document.location.href = "http://www.algunsitio.com";
                 </script>';
Como pueden ver me mantiene la URL del location pero me elimina la llave inicial de la función declarada, es decir toma y reemplaza la secuencia // con una posición anterior por lo que el código ya no queda funcional.

Espero haber sido lo suficientemente claro y puedan ayudarme a solucionar el inconveniente.

De antemano muchas gracias...

Saludos :D
  #2 (permalink)  
Antiguo 20/11/2010, 18:56
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 122
Respuesta: Ayuda, expresión regular

Hola! Más bien sería algo como esto
Código RegEx:
Ver original
  1. (?<=[^:])//.+
Aunque yo creo que sería mejor que pusieras espacio en los comentarios para que te quedara algo asi
Código RegEx:
Ver original
  1. (?<=\s|\t|^)//.+
Bueno solo es una sugerencia, Saludos =)
  #3 (permalink)  
Antiguo 21/11/2010, 08:45
 
Fecha de Ingreso: noviembre-2010
Mensajes: 47
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Ayuda, expresión regular

Muchas gracias!, tu ayuda ha sido muy valiosa.

Saludos
  #4 (permalink)  
Antiguo 21/11/2010, 09:55
 
Fecha de Ingreso: noviembre-2010
Mensajes: 47
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Ayuda, expresión regular

Disculpa la molestia dual3nigma, he utilizado la expresión regular que me facilitaste, pero ahora sucede algo, cuando quiero guardar el archivo en disco el charset utf8 no se mantiene, cabe anotar que si comentarizo la expresión para eliminar comentarios JS funciona bien y no me parecen caracteres extraños.

A qué se debe esto?

Muchas gracias y disculpa las molestias.

Saludos
  #5 (permalink)  
Antiguo 21/11/2010, 16:43
 
Fecha de Ingreso: noviembre-2010
Mensajes: 47
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Ayuda, expresión regular

Me respondo, el problema no es la expresión regular... el problema es cuando en el código existe el doctype, por ejemplo:
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
, como allí existe también la secuencia // elimina esa parte también, voy a buscar una solución a eso, si alguien tiene alguna sugerencia bienvenida sea, muchas gracias.

Última edición por pqek; 21/11/2010 a las 16:50
  #6 (permalink)  
Antiguo 21/11/2010, 23:34
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 122
Respuesta: Ayuda, expresión regular

Pues es muy sencillo solo agrega eso a tu Regex:
Código RegEx:
Ver original
  1. (?<=[^:-\w])//.+
Aunque te insisto que para evitar que te salgan complicaciones deberias de utilizar comentarios que tengan por lo menos un espacio detras de ellos, asi de ahorrarias el tener que estar agregando mas posibles "matches" a la expresion regular, bueno es lo que opino, te quedaria algo asi si hicieras lo que te sugiero

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <script type="text/javascript">
  3.                      function algo(){ //Esto es para algo <- Aqui es donde tendrias que agregar el espacio
  4.                         //acciones ac&#225;  
  5.                     }  
  6. // Esta es otra concordancia
  7.                     document.location.href = "http://www.algunsitio.com";
  8.                 </script>

Y la expresion regular seria asi:
Código RegEx:
Ver original
  1. (?<=\s|\t|^)//.+
  #7 (permalink)  
Antiguo 22/11/2010, 11:43
 
Fecha de Ingreso: noviembre-2010
Mensajes: 47
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Ayuda, expresión regular

Muchas gracias

Saludos

Etiquetas: 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 00:27.