You are on page 1of 18

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLGICOS ESCUELA DE COMPUTACIN

Nombre de la Practica: Lugar de Ejecucin: Tiempo Estimado: MATERIA: DOCENTES: GUIA DE LABORATORIO #5 Expresiones regulares en PHP Centro de Cmputo 2 horas con 30 minutos Lenguajes Interpretados en el Servidor Ing. Ricardo Ernesto Elas

CICLO: 01/2013

I. OBJETIVOS Con la realizacin de esta gua de prctica el estudiante estar en capacidad de: 1. Entender qu es una expresin regular y el uso que puede darles para resolver distintos problemas. 2. Construir patrones de expresiones regulares con distintos propsitos, como validacin, bsqueda y reemplazo en cadenas. 3. Utilizar las funciones de PHP diseadas para trabajar con expresiones regulares. 4. Crear aplicaciones informticas basadas en la utilizacin de expresiones regulares. II. INTRODUCCION TEORICA Qu son las expresiones regulares? Una expresin regular puede ser considerada como una secuencia o patrn de caracteres que representa o describe a un conjunto de cadenas de caracteres sin enumerar explcitamente sus elementos. Estos patrones son utilizados para ser comparados contra una cadena de texto sobre la cual se necesita hacer una bsqueda para encontrar posibles coincidencias. Buena cantidad de lenguajes de programacin utilizan las expresiones regulares porque poseen una indiscutible potencia para procesar texto cuando se intenta localizar caracteres que se ajusten a un formato o para hacer sustitucin de cadenas dentro de un texto. La utilizacin que se le da a las expresiones regulares suelen ser: 1. Verificacin de datos que son enviados desde un formulario antes de insertarlos en una base de datos. 2. Localizacin de subcadenas dentro de una cadena de texto ms compleja. 3. Bsqueda y reemplazo de secuencias de caracteres en una cadena de varias lneas, permitiendo incluso mltiples reemplazos. Por qu utilizar expresiones regulares Es muy probable que logre hacer con funciones de cadena y con un ciclo o lazo el mismo trabajo que con una expresin regular; sin embargo, cuando se hace uso de expresiones regulares se realiza cdigo ms compacto e intuitivo cuando se necesita hacer uso de coincidencia de patrones para realizar alguna tarea con cadenas de texto. Adems de esto, la ejecucin de una expresin regular ser mucho ms rpida que hacer uso de las funciones de cadena y los ciclos o lazos. Conceptos generales de expresiones regulares Comencemos por definir lo que es un patrn, que indirectamente viene siendo un sinnimo de expresin regular. Un patrn es el modelo que se define para ser comparado contra un conjunto de cadenas de caracteres. Ese modelo puede estar constituido por caracteres normales (o literales) y por metacaracteres, que no son otra cosa ms que caracteres con significado especial.

1 / 18

Gua # 5: Expresiones regulares Por ejemplo, en la expresin regular "^1*a$" (las comillas no son parte de la expresin regular, solo la delimitan) el "1" y la "a" son caracteres normales o literales, mientras que los smbolos: "^", "*" y "$" son metacaracteres o caracteres con un significado especial que permiten que esta expresin regular se pueda comparar contra muchas otras cadenas en busca de coincidencias. Patrones de caracteres Dentro de los patrones que representan a un nico carcter, podemos distinguir dos tipos: Los caracteres que se representan a s mismos. Las categoras o clases de caracteres. La expresin regular ms simple que se puede construir es la que est formada por un nico carcter que se representa a s mismo. Por ejemplo, la expresin: "a", describe a todas las cadenas que contengan el carcter "a", esto significa que las cadenas: "Lola", "amiga", "luna", "piano" y "sal" coincidirn con el patrn anterior, porque todas llevan al menos una "a", sin importar en qu posicin est ese carcter dentro de esas cadenas. Las categoras o clases de carcter son patrones que definen un conjunto de caracteres con los que un carcter de una cadena puede concordar. La clase ms general es el patrn . (punto), que representa cualquier carcter del juego de caracteres, a excepcin de algn carcter especial dependiente de la implementacin utilizada. Cuando se quiera representar una categora ms especfica como pueden ser las letras minsculas, las vocales o los dgitos, se utilizan los metacaracteres "[" y "]" (los corchetes) para encerrar entre ellos el subconjunto de caracteres especficos, de la siguiente forma: Expresin regular (o patrn) Descripcin [abcdefghijklmnopqrstuvwxyz] El alfabeto ingls [aeiou] Las vocales [0123456789] Los dgitos [] Vocales maysculas acentuadas Para ahorrar escritura, se puede utilizar el metacaracter "-" para indicar un rango de caracteres. As se coloca el primer carcter del rango, luego el metacaracter Agrupamiento de patrones Los patrones que representan un carcter se pueden agrupar para formar expresiones regulares ms complejas y es esta caracterstica las que les da una gran potencia para el procesamiento de cadenas. Entre los distintos tipos de agrupamiento de patrones se pueden mencionar: Las secuencias. Los cuantificadores. Los parntesis. Las alternativas. La fijacin de patrones. Los caracteres escapados. La precedencia. Las operaciones.

III. MATERIALES Y EQUIPO Para la realizacin de la gua de prctica se requerir lo siguiente: No. Requerimiento 1 Gua de prctica #5: Expresiones regulares en PHP 2 Computadora con WampServer y PHP Designer 2007 instalado 3 Memoria USB

Cantidad 1 1 1

Lenguajes Interpretados en el Servidor

Gua # 5: Expresiones regulares

IV. PROCEDIMIENTO Realice ordenadamente cada uno de los siguientes ejercicios. Algunos incluyen ms de una script PHP junto con alguna pgina web en puro HTML. Ejercicio #1: El siguiente ejemplo muestra como listar los enlaces de una web determinada mediante su direccin web, haciendo uso de coincidencias en base a expresiones regulares. Para comenzar ingrese una url en la caja de texto superior derecha, el proceso puede tardar dependiendo de la cantidad de enlaces encontrados. Archivo 1: listaenlaces.php
<!DOCTYPE html> <html lang="es"> <head> <title>Ejercicio de Expresiones Regulares</title> <link href="css/style.css" rel="stylesheet" type="text/css"> <!--[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!--[if IE 6]> <script src="js/belatedPNG.js"></script> <script> DD_belatedPNG.fix('*'); </script> <![endif]--> </head> <body> <div id="bodywrap"> <section id="pagetop"> </section> <header id="pageheader"> <h1>Uso de<span> Expresiones Regulares</span> </h1> <div id="search"> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" name="frm" id="frm"> <div class="searchfield"> <input type="text" name="url" id="url" value="http://www.catswhocode.com/blog/15-phpregular-expressions-for-web-developers" required="required"> </div> <div class="searchbtn"> <input type="hidden" name="Enviar" value="Enviar" /> <input type="image" src="images/searchbtn.png" alt="search"> </div> </form> </div> </header> <div id="contents"> <section id="main"> <div id="leftcontainer"> <article class="post"> <h2>Listar enlaces de una web</h2> <p>El siguiente ejemplo muestra como listar los enlaces de una web determinada mediante su direccion web, haciendo uso de coincidencias en base a expresiones regulares. Para comenzar ingrese una url en la caja de texto superior derecha, el proceso puede tardar dependiendo de la cantidad de enlaces encontrados</p> <? if(isset($_POST['Enviar'])){ procesarForm(); }else{

Lenguajes Interpretados en el Servidor

Gua # 5: Expresiones regulares

echo "<div style='height:300px;'></div>"; } function procesarForm(){ $url = $_POST['url']; if(!preg_match('|^http(s)?\://|', $url)) $url = "http://$url"; $html = file_get_contents($url); preg_match_all("/<a\s*href=['\"](.+?)['\"].*?>/i", $html, $matches); echo "<div style='clear:both;'></div>"; echo "<h2>Enlaces encontrados en ". htmlspecialchars($url) .": </h2>"; echo "<ul>"; for($i=0; $i < count($matches[1]); $i++){ echo "<li>".htmlspecialchars($matches[1][$i])."</li>"; } echo "</ul>"; } ?> <div class="clear"></div> </article> </div> </section> <div class="clear"></div> </div> </div> <footer id="pagefooter"> <div id="footerwrap"> </footer> </body> </html>

Archivo 2: styles.css
* { padding:0; margin:0; } article,aside,details,figcaption,figure, footer,header,hgroup,menu,nav,section { display:block; } blockquote, q { quotes:none; } blockquote:before, blockquote:after, q:before, q:after { content:''; content:none; } del { text-decoration: line-through; } abbr[title], dfn[title] { border-bottom:1px dotted #ccc; cursor:help;

Lenguajes Interpretados en el Servidor

Gua # 5: Expresiones regulares

} .clear { clear:both; } .clear:after { display:block; visibility:hidden; clear:both; height:0; content: "."; } h1, h2, h3 { font-family:Arial, Helvetica, sans-serif; } ul { list-style:none; } a { color:#1496d9; text-decoration:none; } body { background: #fff url(images/bodybg.jpg) repeat-x; font-family:Verdana, Geneva, sans-serif; font-size:62.5%; color:#444; } #bodywrap { width:1000px; margin:0 auto; background:url(images/wrapbg.jpg) center top no-repeat; min-height:400px; padding:0 10px; } #pagetop { height:34px; padding:0 20px; } #pagetop #siteinfo { display:block; height:32px; line-height:30px; float:left; color:#ccc; font-style:italic; font-size:1.1em; } #sitenav { float:right; height:34px; } #sitenav a {

Lenguajes Interpretados en el Servidor

Gua # 5: Expresiones regulares

color:#ccc!important; } #sitenav li { display:inline; font-size:1.1em; } #sitenav li a { display:block; float:left; height:33px; line-height:30px; padding:0 25px; } #sitenav li a:hover { color:#fff!important; } #sitenav li.current a { background:url(images/activemenu.png) center bottom no-repeat; color:#fff!important; } #pageheader { height:118px; padding:0 20px; } #pageheader h1 { display:block; font:normal 3.6em Arial, Helvetica, sans-serif!important; color:#000; text-shadow:#fff 1px 1px 1px; float:left; padding:35px 0 0 0; } #pageheader h1 span { color:#aaa; } #search { float:right; background:url(images/searchbg.png) 0 40px no-repeat; width:261px; height:26px; padding:45px 5px 5px 5px; } #search .searchfield { float:left; } #search .searchbtn { float:right; } .searchfield input { display:block; background:transparent!important; border:none!important;

Lenguajes Interpretados en el Servidor

Gua # 5: Expresiones regulares

width:170px; padding:0 10px; color:#333; line-height:24px; height:26px; } #contents { padding:18px 20px; min-height:200px; } #main { width:100%; } #sidebar {} #featured { background:url(images/featureheaderbg.png) 0 0 no-repeat; height:247px; margin-bottom:10px; position:relative; color:#eee; } #normalheader { background: url(images/normalheader2.jpg) 0 0 no-repeat; height:150px; margin-bottom:10px; } #normalheader.header2 { background:url(images/normalheader.jpg) no-repeat; } #featured p { font-size:1.2em; line-height:18px; font-weight:normal; } #featured .ftheading { position:absolute; right:0; top:-5px; z-index:800; background:url(images/featuredheading.png) no-repeat; height:117px; width:115px; text-indent:-4000px; } #featured h3 { display:block; font:bold 1.8em Arial, Helvetica, sans-serif; color:#fff; margin-bottom:10px; } #featured a { color:#fff; text-decoration:underline!important;

Lenguajes Interpretados en el Servidor

Gua # 5: Expresiones regulares

} #featured .ftwrap { padding:45px 35px 0 35px; } .ftwrap .ftimg { float:left; background:url(images/imgthumb.png) no-repeat; width:220px; height:144px; padding:13px 0 0 13px; } .ftwrap .fttxt { margin-left:260px; padding-top:15px; padding-right:25px; } .mainheading, #leftcontainer h2 { font:bold 1.8em "Trebuchet MS", Arial, Helvetica, sans-serif; color:#666; padding:10px 0; border-bottom:solid 1px #ddd; margin-bottom:15px; } #leftcontainer { padding: 0 10px; } .post p { font-size:1.2em; line-height:18px; margin-bottom:10px; } .post header { margin-bottom:10px; } .post h3,#comments h3 { font:bold 1.6em Arial, Helvetica, sans-serif; color:#000; margin-bottom:5px; } .post h3 a { color:#333; text-decoration:none; } .post header .postinfo { font-size:1.1em; color:#777; } .post footer { border: solid 1px; border-color:#ddd #fff #ddd #fff; padding:3px; font-size:1.1em;

Lenguajes Interpretados en el Servidor

Gua # 5: Expresiones regulares

color:#777; } .post footer { height:15px; line-height:15px; } .post footer span { margin:0 65px 0 0; } .post footer a { color:#333; } .post { margin-bottom:20px; } #sidebar h2 { font:bold 1.8em "Trebuchet MS", Arial, Helvetica, sans-serif; color:#000; margin-bottom:10px; } #sidebar p { font-size:1.2em; line-height:18px; margin-bottom:20px; } #sidebar ul { font-size:1.1em; font-style:italic; margin-bottom:20px; } #sidebar ul li { display:block; height:24px; text-align:right; border-bottom:solid 1px #cdcdcd; line-height:24px; } #sidebar ul li a { line-height:24px; height:24px; background:url(images/ulli.png) left center no-repeat; padding:0 0 0 20px; display:block; color:#666; float:left; width:220px; text-align:left; } #sidebarwrap { padding:0 20px; } #sidebar ul li a:hover { color:#000;

Lenguajes Interpretados en el Servidor

Gua # 5: Expresiones regulares

} #pagefooter { background:url(images/footerbg.jpg) repeat-x; height:89px; } #footerwrap { width:940px; margin:0 auto; color:#ccc; padding-top:35px; } #footerwrap .copyright { float:left; width:60%; font-size:1.1em; } #footerwrap .credit { float:right; width:35%; font-size:1em; color:#999!important; text-align:right; } #footerwrap a { color:#fff; } .wp-pagenavi { background:url(images/pagenavibg.gif) no-repeat; height:26px; width:553px; margin:0 auto 10px auto; padding-left:20px; padding-right:20px; font-size:1.2em; text-align:center; padding-top:2px; } .wp-pagenavi span, .wp-pagenavi a { display:inline-block; height:24px; line-height:24px; margin:0 4px; color:#555; padding:0 8px; } .wp-pagenavi a:hover { background:url(images/pagenaviactivebg.png) repeat-x; color:#000; } .wp-pagenavi .current { background:url(images/pagenaviactivebg.png) repeat-x; color:#000;

Lenguajes Interpretados en el Servidor

10

Gua # 5: Expresiones regulares

} .entry .avatar { height:45px; margin-bottom:10px; } #commentlist .entry { border:solid 1px #ddd; padding:10px; margin-bottom:10px; } .entry .avatar img { float:left; } .entry p { font-size:1.1em; line-height:18px; margin-bottom:10px; } .entry .avatar .author { display:block; margin-left:50px; } .author span, .author time { display:block; } .entry .entry { margin:10px; } .commentreply { font-size:1.1em; height:18px; line-height:18px; text-align:right; } #commentform { padding:10px; background:#f4f4f4; border:solid 1px #ddd; } .form { padding:10px; } #commentform p, .form p { display:block; margin-bottom:10px!important; font-size:1.2em; } .textfield input { display:block; width:550px; height:25px;

Lenguajes Interpretados en el Servidor

11

Gua # 5: Expresiones regulares

line-height:24px; border:solid 1px #ccc; } .text-area textarea { display:block; width:100%; height:250px; border:solid 1px #ccc; } .textfield input:hover, .text-area textarea:hover { border:solid 1px #444; } .textfield input:focus, .text-area textarea:focus { border:solid 1px #333; } .post blockquote { display:block; padding-left:15px; } .post blockquote p { display:block; padding-left:10px; border-left:solid 3px #ddd; font: italic 1.4em Georgia, "Times New Roman", Times, serif; color:#222; line-height:22px; } .post img.alignleft { float:left; border:solid 1px #ddd; padding:10px; display:block; margin:0 10px 5px 0; } .post img.alignright { float:right; border:solid 1px #ddd; padding:10px; display:block; margin:0 0 5px 10px; } .post ul, .post ol { font-size:1.2em; line-height:18px; margin-bottom:15px; padding-left:20px; } .post ul li { display:block; background:url(images/ulli.png) 0 6px no-repeat; padding-left:25px; margin-bottom:10px; }

Lenguajes Interpretados en el Servidor

12

Gua # 5: Expresiones regulares

.post h4 { font:bold 1.4em "Trebuchet MS", Arial, Helvetica, sans-serif; color:#000; margin-bottom:10px; } .post h2 { display:block; font:1.8em "Trebuchet MS", Arial, Helvetica, sans-serif; color:#000; } .post a:hover { color:#000; text-decoration:underline; }

Ejercicio #2: El siguiente ejemplo permite buscar una palabra dentro de un texto ingresado en un rea de texto. Puede copiar y pegar en esta rea de texto contenido de alguna pgina web y verificar ingresando en el cuadro de texto superior la palabra a buscar. Al presionar el botn de bsqueda de palabra se marcarn todas las ocurrencias de las palabras encontradas. Archivo 1: buscadorpalabras.php
<!DOCTYPE html> <html lang="es"> <head> <title>Ejercicio de Expresiones Regulares</title> <link href="css/style.css" rel="stylesheet" type="text/css"> <!--[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!--[if IE 6]> <script src="js/belatedPNG.js"></script> <script> DD_belatedPNG.fix('*'); </script> <![endif]--> </head> <body> <div id="bodywrap"> <section id="pagetop"></section> <header id="pageheader"> <h1>Uso de<span> Expresiones Regulares</span></h1> </header> <div id="contents"> <section id="main"> <div id="leftcontainer"> <h2>Buscador de Palabras</h2> <section id="sidebar"> <? if(isset($_POST['Enviar'])){ $text = $_POST['comment']; $palabra = $_POST['palabra']; $text = preg_replace("/\b(".$palabra.")\b/i", '<span style="background:#5fc9f6">\1</span>', $text); ?> <div id="sidebarwrap"> <h2>Resultado</h2> <p><?=$text?></p> </div> <? }

Lenguajes Interpretados en el Servidor

13

Gua # 5: Expresiones regulares

?> </section> <div class="clear"></div> <article class="post"> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" class="form"> <p class="textfield"> <label for="palabra"> <small>Palabra a buscar</small> </label> <input name="palabra" id="palabra" value="" size="22" tabindex="1" type="text"> </p> <p> <small>Ingrese el texto de prueba para procesarlo con las <strong>expresiones regulares</strong> </small> </p> <p class="text-area"> <textarea name="comment" id="comment" cols="50" rows="10" tabindex="4"> Sample sentence from KomunitasWeb, regex has become popular in web programming. Now we learn regex. According to wikipedia, Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor </textarea> </p> <p> <input name="Enviar" id="Enviar" value="1" type="hidden"> <input name="submit" id="submit" tabindex="5" type="image" src="images/submit.png"> </p> <div class="clear"></div> </form> <div class="clear"></div> </article> </div> </section> <div class="clear"></div> </div> </div> <footer id="pagefooter"> <div id="footerwrap"> </div> </footer> </body> </html>

Ejercicio #3: El siguiente ejemplo permite buscar dentro de archivos HTML la(s) palabra(s) de bsqueda que se ingresan en una caja de texto y muestra los archivos HTML en los que se haya encontrado coincidencia mostrando dichos archivos como enlaces. Se pueden incluir operadores AND (&&) y OR (||) entre las palabras de bsqueda. Pruebe buscar "El Salvador" y Archivo 1: buscador.html
<!DOCTYPE html> <html lang="es"> <head> <title>Buscador UDB</title> <script type="text/javascript" src="js/incluir_y_o.js"></script> </head>

Lenguajes Interpretados en el Servidor

14

Gua # 5: Expresiones regulares

<body> <div id="container"> <header> <h1>Buscador UDB</h1> <img src="images/logoudb.png" alt="Logo UDB" title="Logo UDB" /> </header> <section> <article> <form name="formulario" action="buscador.php" method="POST"> <label for="palabras">Buscar: </label> <input type="text" name="palabras" id="palabras" required="required" /><br /> <input type="checkbox" name="mayusculasminusculas" id="mayusculasminusculas" required="required" /> <label for="mayusculasminusculas" />No diferenciar may&uacute;sculas y min&uacute;sculas</label><br /> <input type="checkbox" name="palabracompleta" id="palabracompleta" required="required" /> <label for="palabracompleta" />Palabra completa</label><br /> <input type="checkbox" name="expresionregular" id="expresionregular" required="required" /> <label for="expresionregular" />Utilizar como expresi&oacute;n regular</label><br /> <input type="button" value="A&ntilde;adir condici&oacute;n Y" /> <input type="button" value="A&ntilde;adir condici&oacute;n O" /> <input type="button" value="Realizar B&uacute;squeda" /> </form> </article> </section> </div> </body> </html>

Archivo 2: buscador.php
<!DOCTYPE html> <html lang="es"> <head> <title>Resultados de la b&uacute;squeda</title> </head> <body> <section> <?php //El script recibe los siguientes valores //$_POST['palabras']: cadena que contiene el conjunto de palabras //que se desea buscar separadas por operadores lgicos //$_POST['mayusculasminusculas']: Indicador de si es necesario o no //diferenciar entre maysculas y minsculas //$_POST['palabracompleta']: Indicador de si se buscan palabras completas //$_POST['expresionregular']: Indicador de si cada palabra se debe interpretar //como una expresin regular //Eliminar los caracteres de barra invertida "\" introducidos durante //la recuperacin de los parmetros enviados $_POST['palabras'] = preg_replace("/(\\\\\\\\)/", "\\", $_POST['palabras']); //Escapar los caracteres "/" ya que actuarn como delimitadores de //la expresin regular $_POST['palabras'] = preg_replace("/\//", "\/", $_POST['palabras']); //Obtener un array que contenga en cada posicin uno de los elementos //o cadenas de bsqueda $elementos = preg_split("/&&|\|\|/", $_POST['palabras']);

Lenguajes Interpretados en el Servidor

15

Gua # 5: Expresiones regulares

//Si est activada la opcin de no diferenciar entre maysculas y minsculas //se tendr que agregar el modificador i a la expresin regular if(isset($_POST['mayusculasminusculas'])): $opcion = "i"; else: $opcion = ""; endif; //Si se buscan palabras completas se exigen separadores se exigen separadores //de palabras antes y despus de cada una de ellas if(isset($_POST['palabracompleta'])): $separador_izquierda = "([ [{(&>\"')]|^)"; $sepeardor_derecha = "([ \],;.:})?!&<\"']|$)"; else: $separador_izquierda = ""; $separador_derecha = ""; endif; for($i=0; $i<count($elementos); $i++): //Si los elementos no son expresiones regulares se tienen que escapar //todos los caracteres con significado especial dentro de las mismas if(!isset($_POST['expresionregular'])): $elementos[$i] = preg_quote($elementos[$i]); endif; //Se compone una expresin regular para cada uno de los elementos //o palabras de bsqueda $elementos[$i] = "/($separador_izquierda$elementos[$i]$separador_derecha)/" . $opcion; endfor; $coincidencias = 0; //Abrir el directorio actual para realizar en cada uno de sus archivos //la bsqueda deseada $dir = "./paginas/"; if(is_dir($dir)): $directorio = opendir($dir); endif; //Procesamos cada uno de los archivos del directorio actual while($fichero = readdir($directorio)): //Si el archivo tiene extensin html o htm if(preg_match("/.+\.(html$|htm$)/i", $fichero)): //Inicializar un array de booleanos a false. Cada elemento de //dicho array pasar a tomar valor true cuando se encuentre en //el archivo una ocurrencia de la correspondiente palabra o //item buscados. for($i=0; $i<count($elementos); $i++): $condiciones[$i] = 0; endfor; //Se abre el archivo para procesarlo $fich = fopen($dir . $fichero, 'r'); $acabar = false; //Procesar cada lnea del archivo leyendo su contenido //saltando las etiquetas HTML while(($entrada = fgetss($fich, 4096)) && !$acabar): //Eliminar los saltos de lnea en cada lnea $entrada = chop($entrada); $acabar = true; //Comprobar si la lnea actual del archivo contiene una o unas //de las palabras o item de bsqueda for($i=0; $i<count($condiciones); $i++):

Lenguajes Interpretados en el Servidor

16

Gua # 5: Expresiones regulares

if(!$condiciones[$i]): $condiciones[$i] = @preg_match($elementos[$i], $entrada); endif; $acabar = $acabar && $condiciones[$i]; endfor; endwhile; fclose($fich); //Componer una cadena con los valores booleanos correspondientes //a cada condicin de bsqueda, unidos por los operadores booleanos //introducidos por el usuario $valores_o = preg_split("/\|\|/", $_POST['palabras']); $k = 0; for($i=0; $i<count($valores_o); $i++): $valores_y = preg_split("/&&/", $valores_o[$i]); for($j=0; $j<count($valores_y); $j++): $valores_y[$j] = $condiciones[$k]; $k++; endfor; $valores_o[$i] = join("&&", $valores_y); endfor; $_POST['palabras'] = join("||", $valores_o); //Se evala la cadena generada: el resultado ser booleano eval("\$concuerda = $_POST[palabras];"); //Si el archivo cumple todas las condiciones de bsqueda //se muestra como un enlace if($concuerda): if($coincidencias == 0): $h1 = "<h1>\nLista de archivos con el contenido buscado\n</h1>\n"; echo $h1; $coincidencias++; endif; $h3 = "\t<h3>\n$coincidencias.-&nbsp;\n"; $h3 .= "<a href=\"$dir" . "$fichero\">\n$fichero\n</a>\n</h3>\n"; echo $h3; endif; endif; endwhile; if($coincidencias == 0): $h1 = "<h1>\nNo hay ning&uacute;n archivo que cumpla los "; $h1 .= "criterios de bsqueda</h1>"; endif; closedir($directorio); ?> </section> </body> </html>

Archivo 3: incluir_y_o.js
function incluir_o_y(valor, formulario){ formulario.palabras.value += valor; }

VII. BIBLIOGRAFIA Gil Rubio / Francisco Javier, Villaverde / Santiago Alonso. Creacin de sitios web con PHP5. 1a. edicin en espaol. Editorial McGraw Hill. Madrid, Espaa. 2006. Gutierrez, Abraham / Bravo, Gins. PHP 5 a travs de ejemplos. 1ra Edicin. Editorial Alfaomega. Junio 2005. Mxico.

Lenguajes Interpretados en el Servidor

17

Gua # 5: Expresiones regulares John Coggeshall. LA BIBLIA DE PHP 5. 1ra. Edicin. Editorial Anaya Multimedia. Madrid, Espaa 2005. Welling, Luke / Thomson, Laura. Desarrollo web con PHP y MySQL. Traduccin de la 3ra Edicin en ingls. Editorial Anaya Multimedia. 2005. Madrid, Espaa. Ellie Quigley / Marko Gargenta. PHP y MySQL Prctico para Diseadores y Programadores web. Primera edicin. Editorial Anaya Multimedia. Madrid, Espaa 2007.

Lenguajes Interpretados en el Servidor

18

You might also like