Вы находитесь на странице: 1из 28

Este material ha sido recopilado y probado solo con la finalidad de usarse como material didctico para apoyo en las

clases, el original pertenece a sus autores.

Nunca consideres el estudio como una obligacin, sino como una oportunidad para penetrar en el bello y maravilloso mundo del saber Vemos la luz del atardecer anaranjada y violeta porque llega demasiado cansada de luchar contra el espacio y el tiempo. Albert Einstein

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

2 de 28

Tabla de Contenidos
CADENAS DE TEXTO Y PATRONES...................................................................................................4 DEFINICIONES...................................................................................................................................4 LA SINTAXIS HEREDOC...................................................................................................................6 DETERMINANDO EL LARGO DE UNA CADENA........................................................................7 TRANSFORMANDO UNA CADENA................................................................................................7 USANDO CADENAS COMO ARREGLOS.......................................................................................8 COMPARACION, BUSQUEDA Y REEMPLAZO EN CADENAS DE TEXTO..............................9 BUSQUEDAS.....................................................................................................................................11 HACIENDO COMPARACIONES CONTRA MASCARAS............................................................13 OPERACIONES DE REEMPLAZO..................................................................................................14 EXTRACCION DE SUBCADENAS.................................................................................................15 FORMATEO DE CADENAS.............................................................................................................16 FORMATEO DE NUMEROS............................................................................................................16 INTERNACIONALIZACION DE APLICACIONES........................................................................17 EXPRESIONES REGULARES (PCRE) -COMPATIBLES CON PEARL -.....................................21 DELIMITADORES.............................................................................................................................22 METACARACTERES........................................................................................................................22 CUANTIFICADORES........................................................................................................................23 FUNCIONES PCRE PARA EXPRESIONES REGULARES............................................................24 SUBEXPRESIONES...........................................................................................................................27 EJERCICIOS.......................................................................................................................................27 GUIA DE ESTUDIO...........................................................................................................................28 BIBLIOGRAFIA RECOMENDADA.....................................................................................................28

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

3 de 28

CADENAS DE TEXTO Y PATRONES


DEFINICIONES
Las cadenas de texto pueden ser definidas usando uno o varios mtodos. La forma mas comn es encapsularlos entre comillas simples o comillas dobles; entre comillas simples significa texto simple donde casi todos los caracteres son usados literalmente. De otro lado comillas doble encapsula texto complejo que le permite secuencias escape especiales (Por ejemplo insertar caracteres especiales ) lo que hace posible embeber el valor de una variable directamente en una cadena, sin la necesidad de ningn operador especial. Las secuencias escape son llamadas a veces caracteres de control y toman la forma de un backslash (\) seguido de uno o mas caracteres. Quizs la secuencia escape mas conocida es el caracter nueva linea \n En el siguiente ejemplo usaremos notacin hexadecimal y octal para mostrar un asterisco: echo "\052"; echo "\x2a"; pruebe el codigo anterior con comilla simple y luego pruebelo con comilla doble quitando el backslash... que ocurre ?

Las variables se pueden embeber directamente dentro de una cadena con doble comilla simplemente tipeando su nombre : $nombreEquipo="Barcelona Futbol Club"; echo "$nombreEquipo"; Esta sintaxis tan simple no funciona en aquellas situaciones en las cuales se requieren funcionamiento especiales por ejemplo:

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

4 de 28

Ejemplo $yo='Walter'; echo "No existen mas de dos {$yo}s"; Las llaves usadas entre doble comillas permiten agregar una s al valor de $yo sin ella buscara la variable $yos que obviamente no existe. Ejemplo 2 $ciudades=array('cali','medellin', 'pereira'); echo "Ciudad elegida: {$ciudades[2]}[1954]"; Igual tratamiento sin las llaves el analizador PHP(parser) podra interpretar el arreglo como $ciudades[2][1954] que claramente no existe en la definicin. Algunas otras secuencias de escape son : SECUENCIA \n \r \t \\ \$ \" VALOR alimentacin de lnea (LF o 0x0A (10) en ASCII) retorno de carro (CR o 0x0D (13) en ASCII) tabulacin horizontal (HT o 0x09 (9) en ASCII) barra invertida signo de dlar comilla-doble

\[0-7]{1,3} la secuencia de caracteres que coincide con la expresin regular es un carcter en notacin octal \x[0-9A-Fa-f]{1,2} la secuencia de caracteres que coincide con la expresin regular es un carcter en notacin hexadecimal

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

5 de 28

LA SINTAXIS HEREDOC
Existe una tercer sintaxis para texto llamada HEREDOC, que puede ser usada para declarar cadenas de texto complejas, en lineas generales proveen la misma funcionalidad que comillas dobles, con la excepcin de que heredoc usa un juego especial de caracteres para encapsular la cadena de texto, es muy fcil declarar cadenas que incluyan a su vez muchas cadenas con doble comilla. El operador especial de heredoc es <<< seguido por un identificador. Luego se debe cerrar la cadena con el mismo identificador seguido por punto y coma, tenga en cuenta no dejar espacios en blanco en el inicio del carcter de cierre. Heredoc utiliza las mismas reglas de definicin de variables y es case sensitive(Valida los caracteres exactamente iguales) podemos ver en el ejemplo como se puede interpolar texto, variables, secuencias escape EJEMPLO 1 $var="Aureliano Buendia"; $mensaje = <<<TEXT Muchos aos despus, frente al pelotn de fusilamiento, el coronel $var haba de recordar aquella tarde remota en que su padre lo llev a conocer el hielo. Macondo era entonces una aldea de veinte casas de barro y caabrava construidas a la orilla de un ro de aguas difanas que se precipitaban por un lecho de piedras pulidas, blancas y enormes como huevos prehistricos. El mundo era tan reciente, que muchas cosas carecan de nombre, y para mencionarlas haba que sealarlas con el dedo. $var era un viejo coronel de la guerra de los mil das que solo se ganaba entre pensin y otras cosas \$ 200.000 \03 \03 TEXT;

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

6 de 28

echo $mensaje;

Sin la sintaxis heredoc, las asignaciones de cadenas complejas puede convertirse rpidamente en variables muy desordenadas. Heredoc no se utiliza muy a menudo aunque debiese usarse mas pues mejoraria la escritura y legibilidad de muchos scripts.

DETERMINANDO EL LARGO DE UNA CADENA


La funcion strlen() determina el largo de una cadena en bytes. Como muchas funciones de cadena en PHP esta es binary-safe. Esto significa que TODOS los caracteres de la cadena son contados sin importar su valor. Ejemplo 1: $mensaje = " Cali es bella "; echo strlen($mensaje); Ejemplo 2: $mensaje = <<<TEXT Muchos aos despus, frente al pelotn de fusilamiento, el coronel aureliano buendia haba de recordar aquella tarde remota en que su padre lo llev a conocer el hielo TEXT; echo strlen($mensaje);

TRANSFORMANDO UNA CADENA


Strtr() es una funcin que permite transformar o traducir una cadena en otra, esto tambin se conoce como transliteracion. Es til para traducir ciertos caracteres con acentuaciones de otros idiomas.
Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias Pag 7 de 28

SINTAXIS strtr($cadenaacomparar, caracteresparareemplazar, caracterdereemplazo) EJEMPLO 1: $mensaje = "los zapoz en la lahuna ... "; echo strtr($mensaje,"zh","sg");

USANDO CADENAS COMO ARREGLOS


En esencia una cadena de texto es un arreglo veamos el ejemplo: Ejemplo 1: $cadena = "Sena. Una entidad de talla mundial"; echo "$cadena[0]"; echo "$cadena[3]"; Ejemplo 2: $cadena = "abcdefgh"; for ($i=0;$i<strlen($cadena);$i++){ if ($cadena[$i]>'d'){ echo $cadena[$i]; } } Describa en sus palabras que hace el cdigo anterior

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

8 de 28

COMPARACION, BUSQUEDA Y REEMPLAZO EN CADENAS DE TEXTO


La comparacin es quiz una de las operaciones que mas se hacen con cadenas de texto, A veces la manipulacin de tipos en PHP puede ser bastante desquiciante sobre todo porque una cadena de texto que contenga nmeros puede ser transformada libremente por PHP en un numero entero. Veamos un ejemplo de esto: $cadena='123arias'; if($cadena==123){ echo "el if da true !!.... esto es obviamente un error del PARSER PHP"; } Por supuesto la mejor manera de evitar esto es usar el operador de identidad === as: $cadena='123arias'; if($cadena===123){ echo "el if da true !!.... esto es obviamente un error del PARSER PHP"; } else { echo "ahora si valida correctamente"; } ademas podemos usar las funciones strcmp(), strcasecmp() para coincidir con las cadenas a comparar. Ambas funcionan igual comparando los caracteres la diferencia es que el primero strcmp() es casesensitive (sensible a los caracteres) mientras que el otro no,

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

9 de 28

SINTAXIS strcmp($cadenaacomparar, $cadenaoriginal) TENGA EN CUENTA QUE LA MAYORIA DE LAS FUNCIONES PARA MANIPULAR CADENAS RETORNAN 0 PARA LA OPCION POSITIVA Y 1 PARA LA OPCION NEGATIVA DE UNA VALIDACION. veamoslo con ejemplos: ejemplo 1 $password='TuClave12x'; if (strcmp($password, "TuClave12x")=== 0){ echo "clave digitada correctamente"; } ejemplo 2 $password='TuClave12x'; if (strcmp($password, "tuclave12x")=== 0){ echo "clave digitada correctamente"; } else { echo "clave errada"; } ejemplo 3 (pon especial atencin al comportamiento) $password='TuClave12x'; if (strcasecmp($password, "tuclave12x")=== 0){ echo "clave digitada correctamente"; } else { echo "clave errada";
Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias Pag 10 de 28

Que tiene de diferente al ejercicio anterior ? (ejemplo 2)


hay una variacin con la funcin substr_compare() ya que le permite probar solo algunos caracteres aislados dentro de 2 cadenas por ejemplo: SINTAXIS substr_compare(cadenaprincipal, cadenasecundaria, posiciondeinicio,largodelacomparacion, casesensitive ) $p1='abcd12345'; $p2='abcd78910'; echo substr_compare ($p1, $p2, 1,4); //devuelve true -1-

BUSQUEDAS
La funcin strpos() efecta una bsqueda y devuelve el numero de la posicin numrica donde empieza la cadena que se esta buscando SINTAXIS : strpos($lacadena, $eltextoaencontrar) EJEMPLO 1 $cadena='four non blondes'; $textoahallar='non'; echo strpos($cadena, $textoahallar);

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

11 de 28

EJEMPLO 2 /*buscando una aguja en un pajar*/ $elpajar='dabale arroz a la zorra el abad'; $laaguja='abad'; echo strpos($elpajar, $laaguja); EJEMPLO 3 /*buscando una aguja en un pajar*/ $elpajar='dabale arroz a la zorra el abad'; $laaguja='abad'; /*Recordemos que el resultado para la mayoria de las funciones de cadena es 0=true 1=false * en este orden de ideas lo podemos usar utilizando operadores de identidad */ if (strpos($elpajar, $laaguja)!==false){ echo "el texto ha sido encontrado en la posicion: <br>"; echo strpos($elpajar, $laaguja); }else { echo "lo sentimos el dato ingresado no existe. Usted sera Eliminado por un rayo laser !"; } Opcionalmente se le puede agregar un tercer parmetro a strpos() indicndole la posicin del arreglos desde donde se desea empezar la bsqueda as: /*buscando una aguja en un pajar*/ $elpajar='123456123456'; $laaguja='123'; echo strpos($elpajar,$laaguja); //bsqueda normal echo"<br>"; echo strpos($elpajar,$laaguja,1); //bsqueda indicndole la posicin de inicio

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

12 de 28

La funcin strstr() trabaja similar a strpos() la nica diferencia es que esta funcin retorna la porcin del texto a partir de la posicin hallada. SINTAXIS : strstr($texto, $vrabuscar) EJEMPLO $elpajar='Real Madrid'; $laaguja='Ma'; echo strstr($elpajar,$laaguja); //bsqueda normal strstr() es mas lento que strpos(), ambos son Case Sensitive(Validar todos los caracteres de manera exacta). Sin embargo PHP provee funciones iguales a las anteriores pero son del tipo CASE INSESITIVE (es decir no validan los caracteres de manera exacta) ellas son stripos() stristr()

HACIENDO COMPARACIONES CONTRA MASCARAS


Podemos llamar MASCARA o MASK a una serie de caracteres que deseamos predefinir como permitidos. Existe varias funciones en PHP que permiten comparar contra mascaras predeterminadas. Una de ellas es strspan() que retorna la longitud del segmento inicial de caracteres que contiene cualquiera de los caracteres especificados en la mascara. SINTAXIS : strspn($string, $mask, Indice inicial, indice final) EJEMPLO 1 sencillo $string='133445abcdef'; $mascara='12345'; echo strspn($string, $mascara); //muestra 6 EJEMPLO 2

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

13 de 28

$string='1abc234'; $mask='abc'; echo strspn($string, $mask, 1 ,4); En el ejemplo anterior la funcin strspn() empezara examinando la cadena desde el segundo carcter (indice 1), y continuara hasta 4 caracteres sin embargo, solo los primeros 3 caracteres encontrados satisfacen las limitaciones de la mascara y por lo tanto el script muestra el numero 3

OPERACIONES DE REEMPLAZO
Para ello existe la funcin str_replace() que es CASE-SENSITIVE y su correspondiente str_ireplace() SINTAXIS : str_replace($palabraoriginal, $palabradereemplazo, $cadenadetexto) EJEMPLOS: echo str_replace("Pollo", "Huevos", "Huevos Fritos"); EJEMPLO 2 (SI SE REQUIEREN VARIAS PALABRAS SE PUEDEN USAR ARRAYS) echo str_replace(array("Hola", "Mundo"), array("Bonjour","Monde"),("Hola Mundo de Programadores")); echo str_replace(array("Hola","Mundo"),"Bye","Hola Mundo de Programadores");

Describa la diferencia de los 2 ejemplos anteriores:

Si se requiere reemplazar una porcin de texto en la cual usted conoce el indice de inicio y el indice de fin, se puede usar substr_replace() asi:

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

14 de 28

echo substr_replace("Hello World","Gente",6); echo '<br>'; echo substr_replace("Las papas fritas son ricas","Yucas",4,5); Haciendo una combinacin de str_pos() y substr_replace() podemos obtener una poderosa herramienta para ejemplos como este: $usuario='walter.arias@php.net'; $nombre= substr_replace($usuario,"", strpos($usuario, '@')); echo "Hola Sr ".$nombre;

EXTRACCION DE SUBCADENAS
La funcion substr() nos permite extraer subcadenas de una cadena larga. SINTAXIS : substr($lacadenaatratar, $elindicede inicio, $longituddelasubcadena) EJEMPLOS $mensaje = "Muchos aos despus, frente al pelotn de fusilamiento, el coronel Aureliano Buendia"; echo substr($mensaje,0,12); echo('<br>'); echo substr($mensaje, 23,6); echo ('<br>'); echo substr($mensaje,-7); echo ('<br>'); echo substr($mensaje,-23,10);

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

15 de 28

FORMATEO DE CADENAS
PHP provee una variedad de funciones diferentes que se pueden usar para formatear salidas en una variedad de formas. Las reglas de formateo a veces son gobernadas por consideraciones locales (Segn el pas) a tener en cuenta que el formato de separadores decimales y el smbolo de moneda difiere en muchos pases. La funcin setlocale() toma 2 parmetros : el nombre local que usted quiere configurar y la categora que indica que funciones son afectadas por el cambio. Ejemplo setlocale(LC_MONETARY, 'en_US');

FORMATEO DE NUMEROS.
La funcin number_format() se usa tpicamente cuando se desea mostrar un numero con sus miles y parte decimal separada. Dicha funcin acepta 1,2,y 4 argumentos (pero no 3) si solo se le pasa un argumento el numero sera redondeado al entero mas cercano y se usa una coma para separar los miles. Si se le pasan 2 argumentos el numero se redonderara al numero de decimales dado con una coma separando miles, respectivamente. SINTAXIS : number_format($elnumeroaformatear,$numerodedecimalesamostrar, $separadorparadecimales,$separadorparamiles) Veamos ejemplos : echo number_format("100000.698"); echo "<br>"; echo number_format("100000.698",3,",","."); echo "<br>"; echo number_format("100000.698",3,","," ");

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

16 de 28

INTERNACIONALIZACION DE APLICACIONES
Ahora combinemos funcin setlocale() para internacionalizar nuestra aplicacin con la funcin money_format() setlocale(LC_MONETARY, "en_US"); echo money_format('%.2n', "100000.698"); echo "<br>"; /*Otro ejemplo de internacionalizacin * con funciones string de PHP EN JAPONES */ setlocale(LC_MONETARY, "ja_JP.UTF-8"); echo money_format('%.2n', "100000.698"); echo "<br>"; /*Otro ejemplo de internacionalizacin * con funciones string de PHP */ setlocale(LC_MONETARY, "en_US"); echo money_format('%.2i', "100000.698"); echo "<br>"; /* ejemplo de internacionalizacin * con funciones string de PHP */ setlocale(LC_MONETARY, "ja_JP"); echo money_format('%.2i', "100000.698"); echo "<br>";

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

17 de 28

mas detalle de setlocale y money format en: http://php.net/manual/en/function.setlocale.php Importante: la funcin money format puede NO funcionar en windows y algunas variaciones de UNIX. Favor consultar: http://co.php.net/manual/en/function.money-format.php Para formateo genrico donde no se requieren formateos numricos o de moneda use las funciones printf() y sprintf() veamos la sintaxis: El string de formato est compuesto de cero o ms directivas: caracteres ordinarios (excluyendo %) que son copiados directamente al resultado y especificaciones de conversin, cada una de las cuales da lugar a extraer su propio parmetro. Esto aplica tanto para sprintf() como printf(). Cada especificacin de conversin consiste en un signo de porcentaje (%), seguido por uno o ms de estos elementos, en orden: b c d e u f F o s x X Sale un entero como binario Sale el carcter que se ingreso como entero en su valor ASCII Sale un numero decimal con signo Sale el numero en notacin cientfica (ej. 3,8e+9) Sale un numero decimal sin signo Sale un numero con coma flotante local (depende de la configuracin del pc) Sale un numero con coma flotante NO local (depende de la configuracin del pc) Sale un numero en su representacin en octal Sale una cadena de texto Sale un numero en hexadecimal con letra minscula Sale un numero en hexadecimal con letra mayscula

EJEMPLOS:

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

18 de 28

$f=123.45; $hx=639; $s="Una cadena de texto :)"; $x=64; printf("%d",$f); //imprime entero echo "<br>"; printf("%f",$f); //imprime numero de punto flotante echo "<br>"; printf("%e",$f); //imprime numero usando notacion decimal echo "<br>"; printf("%b",$f); //imprime numero usando un numero binario echo "<br>"; printf("%c",$x); //transforma un valor en su caracter ascii echo "<br>"; printf("Por supuesto tambien manipula %s",$s); //imprime una cadena de texto

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

19 de 28

echo "<br>"; printf("%X",$hx); //imprime hexadecimal mayuscula EJEMPLOS CON sprintf() $year=2012; $month=12; $day=2; $fechaok = sprintf("%04d-%02d-%02d", $year, $month, $day); echo $fechaok."<br>"; //Otro ejemplo de la potencia de sprintf() $money1 = 68.75; $money2 = 54.35; $money = $money1 + $money2; echo $money."<br>"; //sin formatear $valorFormateado = sprintf("%01.2f", $money); echo $valorFormateado;

Otras funciones interesantes para explorar : sscanf() - Interpreta un string de entrada de acuerdo con un formato

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

20 de 28

fscanf() - Analiza la entrada desde un archivo de acuerdo a un formato vsprintf() - Devuelve una cadena con formato explode() - Transforma una cadena en un arreglo con delimitadores predeterminados

Ejemplo explode notese el uso y la potencia de var_dump para la impresion del arreglo : $cadena="Y los ngeles gneos cayeron: Profundos truenos se oan: en las costas ardiendo :con los fuegos de Oro"; $explosion= explode(":", $cadena); echo var_dump($explosion); Un listado detallado y actualizado de funciones para string aqui:

http://co.php.net/manual/es/ref.strings.php

EXPRESIONES REGULARES (PCRE) -COMPATIBLES CON PEARL Ofrecen un herramienta muy poderosa de comparacin de cadenas y mecanismo de reemplazo que supera por lejos cualquiera de las funciones vistas hasta ahora.

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

21 de 28

Una expresion regular es una cadena que describe un conjunto de reglas de comparacin. Una expresion regular basica puede ser Exito para que el sistema la encuentre exactamente, lo cual usted podria hacer igual con strpos() que puede ser una alternativa mas rapida. El poder real de una expresin regular se encuentra cuando usted no Sabe exactamente la cadena a comparar. En este caso, puede especificar uno o mas Metacaracteres y cuantificadores que no tienen el significado literal pero en lugar dan pie a ser interpretados de una manera especial.

DELIMITADORES
Una expresin regular SIEMPRE es delimitada por un carcter de inicio y uno de finalizacion. Cualquier carcter puede ser usado para ese fin, desde que ninguna ocurrencia del carcter este dentro de la cadena a comparar en cuyo caso se debe escapear, por convencin los caracteres mas usados son la barra oblicua o forward slash (/) o el simbolo (#) llamado octothorpe.

METACARACTERES
El termino metacaracter es un poco inexacto, un metacarater puede estar compuesto de uno o mas caracteres. Sin embargo cada metacaracter representa un carcter simple en una expresin. Aqui los metacaracteres mas comunes:

. ^

Coincide con cualquier carcter. Coincide con el inicio de la cadena

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

22 de 28

$ \s \d \w \D \S

Coincide con el fin de la cadena Coincide con cualquier carcter en blanco Coincide con cualquier dgito del 0 al 9 Coincide con cualquier carcter alfanumrico Cualquier carcter que no sea un dgito del 0 al 9 Cualquier carcter que no sea espacio en blanco

\b Marca el inicio y final de una palabra Ademas los metacaracteres se pueden agrupar expresiones de agrupacion. Por ejemplo, una serie de caracteres validos se pueden agrupar con corchetes []: /ab[cd]e/ La expresion de ejemplo encontrara como validos abce y abde

CUANTIFICADORES
Estos sirven para especificar el numero de veces que un caracter en particular o metacaracter puede aparecer en una cadena a comparar. Hay 4 tipos de cuantificadores * + ? {n,m} El caracter puede aparecer 0 o mas veces El caracter puede aparecer una o mas veces El caracter puede aparecer 0 o una vez El caracter puede aparecer al menos n veces, y no mas de m veces.Un parametro puede ser admitido indicando un minimo de caracteres o viceversa.

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

23 de 28

FUNCIONES PCRE PARA EXPRESIONES REGULARES


preg_match(). Chequea el patrn en una cadena alfanumrica. Devuelve true si coincide, o false en caso contrario. Adems captura las coincidencias en un array. preg_match_all(). Igual que preg_match, pero almacenando todas las subcadenas que coincidan con el patrn (no slo una como es el caso de preg_match) preg_replace(). Nos permite reemplazar textos mediante expresiones regulares. Los argumentos pueden ser arrays, con lo que se realiza ms de una sustitucin con una sola funcin. preg_split(). Separa la cadena dada mediante una expresin regular. preg_grep(). Busca el patrn dentro de un array, y devuelve otro array con las ocurrencias. EJEMPLOS EXPRESIONES REGULARES EJEMPLO 1 $expresion="/\d+/"; //declaramos la expresin regular a usar $cadena="Senor pedro usted me debe $ 2000 desde hace 5 meses le voy a cobrar el 10 % "; preg_match_all($expresion, $cadena, $incidencias); print_r($incidencias); EJEMPLO 2 $expresion="/a[be]\w/"; //declaramos la expresion regular a usar $cadena="el abedul posee poderes casi aeroespaciales por eso la abeja se posa en el "; preg_match_all($expresion, $cadena, $coincidencias);

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

24 de 28

print_r($coincidencias); EJEMPLO 3 $expresion="/p[oa?]\w/"; //declaramos la expresion regular a usar $cadena=array ("poder","pala","pastuso","acido","poema","pacifico","Jefferson","poor","paaa"); $z=preg_grep($expresion, $cadena); var_dump($z); EJEMPLO 4 REEMPLAZANDO $cadena="El veloz murcilago indio coma feliz cardillo y kiwi"; $patrones=array("/veloz/","/indio/","/murcielago/"); $sustituciones=array("lento","africano","galapago"); echo preg_replace($patrones,$sustituciones,$cadena);

Validacin numero de tarjeta de crdito visa MUY bsica $expresion="/^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/"; //declaramos la expresin regular a usar $valortarjeta="4568-4589-7895-1234"; if (preg_match($expresion, $valortarjeta)){

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

25 de 28

echo "su tarjeta visa es valida"; }else { echo "El numero de su tarjeta es invalido"; }

VALIDAR UN EMAIL MUY BASICO $expresion="/[a-z|\.]+@[a-z|\.]+\.[org|com|net]$/"; //declaramos la expresin regular a usar $mail="waroson@gmail.net"; if (!(preg_match($expresion, $mail))){ echo "Digito un email invalido"; } EJEMPLOS DE EXPRESIONES ^8\d{2}.\d{3}.\d{3}-\d{1}$ (Validar un nit)

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

26 de 28

ACERCA DE EXPRESIONES REGULARES EN LA WEB


http://gskinner.com/RegExr/ regular expresion tester (complemento mozilla) http://co.php.net/manual/es/book.pcre.php http://boozox.net/php/manual-completo-y-sencillo-de-expresiones-regulares-en-php/ http://regexlib.com/

SUBEXPRESIONES
Son expresiones regulares contenidas dentro de otras se definen encapsulandolas entre parentesis asi: /a(bc.)e/ La expresin anterior encontrara la a seguida de la b y c, seguida por cualquier carcter y finalmente por la e.

EJERCICIOS
Ver Anexo

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

27 de 28

GUIA DE ESTUDIO
Esta gua le presenta los temas que debe dominar al finalizar la unidad. Como repaso, evale su comprensin en cada uno de ellos.
TEMA DOMINADO POR REPASAR

Cadenas de texto y sus diversas formas de creacin Funcin heredoc. Secuencias escape Operaciones con cadenas : largo,transformaciones, comparaciones Bsquedas simples en cadenas de texto Formateo de cadenas, nmeros e internacionalizacin de aplicaciones Expresiones regulares: Metacaracteres, delimitadores, etc.

BIBLIOGRAFIA RECOMENDADA
ZEND PHP 5 CERTIFICATION STUDY GUIDE. Davey Shafik, Ben Ramsey. PHP Architect Books. ZEND PHP 5.3 CERTIFICACION GUIDE. ZEND TECNOLOGIES. MANUAL OFICIAL PHP: http://php.net/manual/es/index.php

MANUAL IMPRESCINDIBLE DE PHP 5. LUIS MIGUEL CABEZAS GRANADO. ANAYA MULTIMEDIA. 2004

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias

Pag

28 de 28

Вам также может понравиться