Ir al contenido


Foto

PHP Patterns


  • Por favor identifícate para responder
4 respuestas en este tema

#1 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 27 julio 2009 - 02:36

Hola compañeros, querí­a saber si alguien me podrí­a explicar el uso de Patterns en PHP para búsquedas o comparaciones, por ejemplo, buscar cualquier lí­nea que contenga dentro de una etiqueta <iframe></iframe> o <bb1><bb2> (éste último es una inyección de código que ha estado apareciendo en las webs) para poder hacer alguna acción como eliminar o reemplazar, etc, etc. Es un tema de la cual hay mucho en la red pero están todos en inglés y no entiendo nada :$, espero me puedan ayudar los maestros :D

Fleon xD
  • 0

#2 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 30 julio 2009 - 02:19

¿Nadie? *-) :(
  • 0

#3 Héctor Randolph

Héctor Randolph

    501st Legion

  • Moderadores
  • PipPipPip
  • 664 mensajes
  • LocationMéxico

Escrito 30 julio 2009 - 02:23

Hola Fleon

Estuve trabajando en lo que pides y voy logrando algo. Sin embargo, el dí­a de ayer estuve algo enfermo y no he tenido tiempo de terminar. Ten paciencia que pronto subo algo de lo que estoy haciendo.

Saludos.
  • 0

#4 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 30 julio 2009 - 02:33

Gracias amigo Héctor, con paciencia esperaré :D

Fleon xD
  • 0

#5 Héctor Randolph

Héctor Randolph

    501st Legion

  • Moderadores
  • PipPipPip
  • 664 mensajes
  • LocationMéxico

Escrito 31 julio 2009 - 04:43

Lo prometido es deuda.

Para el caso de la etiqueta iframe propongo lo siguiente:

Este es un archivo llamado "documento.txt" que contiene la etiqueta iframe



delphi
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html lang="es">
  3. <head>
  4. <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
  5. </head>
  6. <body>
  7.  
  8. <iframe  src="http://www.myurl.com" width=450 height=300></iframe>
  9.  
  10. < iframe src="otra_pagina.html" width=450 height=300>< /iframe >
  11.  
  12. <h1>Este es un documento de prueba.</h1>
  13.  
  14. <iframe src="http://www.myurl.com" width=200 height=200>
  15.  
  16. <!--Contenido visto por browsers que NO soportan el tag <iframe>-->
  17.  
  18. <a href="http://www.myurl.com">Click aquí­ para cargar MyUrl</a>
  19.  
  20. </iframe>
  21. </body>
  22. </html>



Ahora esta es una funcion en PHP que reemplaza la etiqueta iframe por medio de una expresión regular



php
  1. <?php
  2.       $nom_archivo='documento.txt';
  3.       //Abre el archivo para cargarlo en memoria
  4.       $fp = fopen($nom_archivo,'r');
  5.       while(!feof($fp))
  6.               $contenido .= fgets($fp,4096);
  7.       fclose ($fp);
  8.       //Se utiliza una expresión regular para reemplazar el contenido
  9.       $nuevo=preg_replace("/<(\s*iframe(.*?))>(.*?)<\s*\/iframe\s*>/is", '<!-- iframe remplazado automáticamente -->', $contenido);
  10.       echo $nuevo;
  11. ?>



Al final el archivo después de remplazar se verá de esta forma:



delphi
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html lang="es">
  3. <head>
  4. <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
  5. </head>
  6. <body>
  7.  
  8. <!-- iframe remplazado automáticamente -->
  9.  
  10. <!-- iframe remplazado automáticamente -->
  11.  
  12. <h1>Este es un documento de prueba.</h1>
  13.  
  14. <!-- iframe remplazado automáticamente -->
  15. </body>
  16.  
  17. </html>



La función preg_replace remplaza el texto de una cadena que coincide con el patrón formado por una expresión regular.

En este caso el patrón de la expresión regular dice:

Deseamos encontrar todas aquellas cadenas que comienzan con el sí­mbolo <, seguido de cero o más espacios, que contengan la palabra iframe seguida de cero o más caracteres y que termina con el sí­mbolo >. Este patrón coincide con las siguientes cadenas :



delphi
  1. <iframe>
  2. < iframe>
  3. <      iframe>
  4. <iframe    >
  5. <iframe src="http://www.myurl.com" width=450 height=300>
  6. etc...



De una forma similar se busca el patrón para la etiqueta que cierra iframe y en este caso nuestro patrón es algo como esto:



delphi
  1. </iframe>
  2. < /iframe>
  3. <      /iframe>
  4. </iframe    >
  5. etc...



Se puede hacer lo mismo para cualquier etiqueta HTML el problema radica en encontrar una expresión regular para nuestro patrón, pero eso solamente es cuestión de practica.

Saludos
  • 0




IP.Board spam blocked by CleanTalk.