Foros del Web » Programación para mayores de 30 ;) » RegExp »

preg_match para sacar javascript de los links

Estas en el tema de preg_match para sacar javascript de los links en el foro de RegExp en Foros del Web. Hola amigos! Resulta que estoy aprendiendo aún esto de las expresiones regulares en PHP y es un camino bastante complicado :/ Es por esto, que ...
  #1 (permalink)  
Antiguo 02/08/2013, 21:35
Avatar de raulalva3  
Fecha de Ingreso: julio-2005
Ubicación: San Juan - Argentina
Mensajes: 44
Antigüedad: 19 años, 4 meses
Puntos: 0
Pregunta preg_match para sacar javascript de los links

Hola amigos!
Resulta que estoy aprendiendo aún esto de las expresiones regulares en PHP y es un camino bastante complicado :/
Es por esto, que recurro ahora (nuevamente) a la gente tan GENIA de este lugar que en la gran mayoría de los casos me salvó.
Mi problema es que necesito eliminar los tag A (link) que contengan javascript en cualquier parte incluyendo lo que encierran. Ejemplos:
Código HTML:
Ver original
  1. <a  href="javascript:blablabla">lo que encierra</a>
  2. <a href="#" onclick="javascript:blablabla">lo que encierra</a >
Aclaro que dejo espacios dobles a propósito ya que también me encontré con este escenario.
Desde ya, agradezco muchísimo el sólo hecho de haberme leído
  #2 (permalink)  
Antiguo 02/08/2013, 21:37
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: preg_match para sacar javascript de los links

Hay un aporte para evitar ataques XSS y hace justamente eso (y un poco más), usa el buscador.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 02/08/2013, 22:34
Avatar de raulalva3  
Fecha de Ingreso: julio-2005
Ubicación: San Juan - Argentina
Mensajes: 44
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: preg_match para sacar javascript de los links

Triby, gracias por responder..
La verdad que estuve leyendo lo que me recomendaste, pero se ve bastante complicado (para mí) o no es exactamente lo que necesito. Quizás es mucho pedir, pero sólo necesito generar la expresión regular (patrón) que me identifique donde empieza y termina un tag <A>XX</A> y eliminarlo por completo junto con su contenido si es que en cualquier lado figura la palabra "javascript"..
Estuve probando diferentes alternativas (incluso con la ayuda de http://gskinner.com/RegExr/) pero no me sale.. Alguna sugerencia de cómo hacerlo?
  #4 (permalink)  
Antiguo 02/08/2013, 23:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: preg_match para sacar javascript de los links

Ok, si lo quieres con expresión regular movemos tu tema a la sección adecuada.

Tema movido desde PHP.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 03/08/2013, 09:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: preg_match para sacar javascript de los links

Muestra la expresión que tienes y explica más acerca de tu problema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 04/08/2013, 00:04
Avatar de raulalva3  
Fecha de Ingreso: julio-2005
Ubicación: San Juan - Argentina
Mensajes: 44
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: preg_match para sacar javascript de los links

Hola gente!
Después de HORAS de seguir intentando, leyendo y demás, solucioné mi problema de la siguiente forma:
Código PHP:
Ver original
  1. preg_replace( "@<a[^>]*(java|script)[^>]*>.*?</a\s*>@i" , "",$texto);
Lo pongo por si a alguno le sirve =)
Pero ahora tengo un problema nuevo =(
Usando
Código PHP:
Ver original
  1. preg_replace( "@<img((?!dominio|especifico).)*?>@i" , "",$texto);
Hice que las imagenes insertadas contengan si o si unos dominios especificos, si no es asi, borra el tag completo de la imagen. Eso me funcionó a la perfección (espero se entienda hasta ahí). Pero cuando quiero aplicar el mismo criterio a los IFRAMES me da error el servidor de PHP. Chrome me dice "ERR_CONNECTION_RESET"
Código PHP:
Ver original
  1. preg_replace( "@<iframe((?!youtu).)*?>@i" , "",$texto);
Claro que la expresión continuaba hasta cerrar el iframe, pero omití esa parte ya que la resumí hasta ahi para ver si funcionaba y no..
Lo más extraño es que en http://gskinner.com/RegExr/ esa misma expresión si me funciona sin ningún problema y no se que estoy haciendo mal.

Última edición por raulalva3; 04/08/2013 a las 00:20

Etiquetas: javascript+php, php, preg_match
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 12:35.