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
Fleon xD
PHP Patterns
Comenzado por
Fleon
, jul 27 2009 02:36
4 respuestas en este tema
#1
Escrito 27 julio 2009 - 02:36
#2
Escrito 30 julio 2009 - 02:19
¿Nadie?
#3
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.
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.
#4
Escrito 30 julio 2009 - 02:33
Gracias amigo Héctor, con paciencia esperaré
Fleon xD
Fleon xD
#5
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
Ahora esta es una funcion en PHP que reemplaza la etiqueta iframe por medio de una expresión regular
Al final el archivo después de remplazar se verá de esta forma:
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 :
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:
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
Para el caso de la etiqueta iframe propongo lo siguiente:
Este es un archivo llamado "documento.txt" que contiene la etiqueta iframe
delphi
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="es"> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> </head> <body> <iframe src="http://www.myurl.com" width=450 height=300></iframe> < iframe src="otra_pagina.html" width=450 height=300>< /iframe > <h1>Este es un documento de prueba.</h1> <iframe src="http://www.myurl.com" width=200 height=200> <!--Contenido visto por browsers que NO soportan el tag <iframe>--> <a href="http://www.myurl.com">Click aquí para cargar MyUrl</a> </iframe> </body> </html>
Ahora esta es una funcion en PHP que reemplaza la etiqueta iframe por medio de una expresión regular
php
<?php $nom_archivo='documento.txt'; //Abre el archivo para cargarlo en memoria //Se utiliza una expresión regular para reemplazar el contenido $nuevo=preg_replace("/<(\s*iframe(.*?))>(.*?)<\s*\/iframe\s*>/is", '<!-- iframe remplazado automáticamente -->', $contenido); echo $nuevo; ?>
Al final el archivo después de remplazar se verá de esta forma:
delphi
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="es"> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> </head> <body> <!-- iframe remplazado automáticamente --> <!-- iframe remplazado automáticamente --> <h1>Este es un documento de prueba.</h1> <!-- iframe remplazado automáticamente --> </body> </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
<iframe> < iframe> < iframe> <iframe > <iframe src="http://www.myurl.com" width=450 height=300> 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
</iframe> < /iframe> < /iframe> </iframe > 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