Desarrollo Web Con Php 7 Entrega

28

Transcript of Desarrollo Web Con Php 7 Entrega

Page 1: Desarrollo Web Con Php 7 Entrega
Page 2: Desarrollo Web Con Php 7 Entrega

Este material ha sido recopilado y probado solo con la finalidad de usarse como material didáctico para apoyo en las clases, el original pertenece a sus autores.

“Nunca consideres el estudio como una obligación, 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

Page 3: Desarrollo Web Con Php 7 Entrega

Tabla de ContenidosCADENAS DE TEXTO Y PATRONES...................................................................................................4

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

BIBLIOGRAFIA RECOMENDADA.....................................................................................................28

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias ⌫ Pag 3 de 28

Page 4: Desarrollo Web Con Php 7 Entrega

CADENAS DE TEXTO Y PATRONES

DEFINICIONES

Las cadenas de texto pueden ser definidas usando uno o varios métodos. La forma mas común 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 ningún 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. Quizás la secuencia escape mas conocida es el caracter nueva linea \n En el siguiente ejemplo usaremos notación 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

Page 5: Desarrollo Web Con Php 7 Entrega

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 buscaría 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) podría interpretar el arreglo como $ciudades[2][1954] que claramente no existe en la definición.

Algunas otras secuencias de escape son :

SECUENCIA VALOR

\n alimentación de línea (LF o 0x0A (10) en ASCII)

\r retorno de carro (CR o 0x0D (13) en ASCII)

\t tabulación horizontal (HT o 0x09 (9) en ASCII)

\\ barra invertida

\$ signo de dólar

\" comilla-doble

\[0-7]{1,3} la secuencia de caracteres que coincide con la expresión regular es un carácter en notación octal

\x[0-9A-Fa-f]{1,2} la secuencia de caracteres que coincide con la expresión regular es un carácter en notación hexadecimal

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias ⌫ Pag 5 de 28

Page 6: Desarrollo Web Con Php 7 Entrega

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 excepción de que heredoc usa un juego especial de caracteres para encapsular la cadena de texto, es muy fácil 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 carácter de cierre.

Heredoc utiliza las mismas reglas de definición 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 años después, frente al pelotón de fusilamiento, el coronel $var

había 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 cañabrava construidas a la orilla de

un río de aguas diáfanas que se precipitaban por un lecho de piedras pulidas, blancas

y enormes como huevos prehistóricos. El mundo era tan reciente,

que muchas cosas carecían de nombre, y para mencionarlas había

que señalarlas con el dedo.

$var era un viejo coronel de la guerra de los mil días que solo se ganaba

entre pensión 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

Page 7: Desarrollo Web Con Php 7 Entrega

echo $mensaje;

Sin la sintaxis heredoc, las asignaciones de cadenas complejas puede convertirse rápidamente 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 años después, frente al pelotón de fusilamiento, el coronel aureliano buendia

había 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 función que permite transformar o traducir una cadena en otra, esto también 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

Page 8: Desarrollo Web Con Php 7 Entrega

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 código anterior

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias ⌫ Pag 8 de 28

Page 9: Desarrollo Web Con Php 7 Entrega

COMPARACION, BUSQUEDA Y REEMPLAZO EN CADENAS DE TEXTO

La comparación es quizá una de las operaciones que mas se hacen con cadenas de texto, A veces la manipulación de tipos en PHP puede ser bastante desquiciante sobre todo porque una cadena de texto que contenga números 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 case-sensitive (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

Page 10: Desarrollo Web Con Php 7 Entrega

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 atención 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

Page 11: Desarrollo Web Con Php 7 Entrega

}

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

hay una variación con la función 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 función strpos() efectúa una búsqueda y devuelve el numero de la posición numérica 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

Page 12: Desarrollo Web Con Php 7 Entrega

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 parámetro a strpos() indicándole la posición del arreglos desde donde se desea empezar la búsqueda así:

/*buscando una aguja en un pajar*/

$elpajar='123456123456';

$laaguja='123';

echo strpos($elpajar,$laaguja); //búsqueda normal

echo"<br>";

echo strpos($elpajar,$laaguja,1); //búsqueda indicándole la posición de inicio

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias ⌫ Pag 12 de 28

Page 13: Desarrollo Web Con Php 7 Entrega

La función strstr() trabaja similar a strpos() la única diferencia es que esta función retorna la porción del texto a partir de la posición hallada.SINTAXIS : strstr($texto, $vrabuscar)

EJEMPLO

$elpajar='Real Madrid'; $laaguja='Ma'; echo strstr($elpajar,$laaguja); //búsqueda 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 sonstripos()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

Page 14: Desarrollo Web Con Php 7 Entrega

$string='1abc234';$mask='abc';echo strspn($string, $mask, 1 ,4); En el ejemplo anterior la función strspn() empezara examinando la cadena desde el segundo carácter (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 función 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 porción 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

Page 15: Desarrollo Web Con Php 7 Entrega

echo substr_replace("Hello World","Gente",6);

echo '<br>';

echo substr_replace("Las papas fritas son ricas","Yucas",4,5);

Haciendo una combinación de str_pos() y substr_replace() podemos obtener una poderosa herramienta para ejemplos como este:

$usuario='[email protected]';

$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 años después, frente al pelotón 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

Page 16: Desarrollo Web Con Php 7 Entrega

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 (Según el país) a tener en cuenta que el formato de separadores decimales y el símbolo de moneda difiere en muchos países.

La función setlocale() toma 2 parámetros : el nombre local que usted quiere configurar y la categoría que indica que funciones son afectadas por el cambio. Ejemplo

setlocale(LC_MONETARY, 'en_US');

FORMATEO DE NUMEROS.

La función number_format() se usa típicamente cuando se desea mostrar un numero con sus miles y parte decimal separada. Dicha función 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

Page 17: Desarrollo Web Con Php 7 Entrega

INTERNACIONALIZACION DE APLICACIONES

Ahora combinemos función setlocale() para internacionalizar nuestra aplicación con la función money_format()

setlocale(LC_MONETARY, "en_US");

echo money_format('%.2n', "100000.698");

echo "<br>";

/*Otro ejemplo de internacionalización

* 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 internacionalización

* con funciones string de PHP

*/

setlocale(LC_MONETARY, "en_US");

echo money_format('%.2i', "100000.698");

echo "<br>";

/* ejemplo de internacionalización

* 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

Page 18: Desarrollo Web Con Php 7 Entrega

mas detalle de setlocale y money format en:

http://php.net/manual/en/function.setlocale.php

Importante: la función 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 genérico donde no se requieren formateos numéricos o de moneda use las funciones printf() y sprintf() veamos la sintaxis:

El string de formato está compuesto de cero o más directivas: caracteres ordinarios (excluyendo %) que son copiados directamente al resultado y especificaciones de conversión, cada una de las cuales da lugar a extraer su propio parámetro. Esto aplica tanto para sprintf() como printf().

Cada especificación de conversión consiste en un signo de porcentaje (%), seguido por uno o más de estos elementos, en orden:

b Sale un entero como binario

c Sale el carácter que se ingreso como entero en su valor ASCII

d Sale un numero decimal con signo

e Sale el numero en notación científica (ej. 3,8e+9)

u Sale un numero decimal sin signo

f Sale un numero con coma flotante local (depende de la configuración del pc)

F Sale un numero con coma flotante NO local (depende de la configuración del pc)

o Sale un numero en su representación en octal

s Sale una cadena de texto

x Sale un numero en hexadecimal con letra minúscula

X Sale un numero en hexadecimal con letra mayúscula

EJEMPLOS:

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias ⌫ Pag 18 de 28

Page 19: Desarrollo Web Con Php 7 Entrega

$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

Page 20: Desarrollo Web Con Php 7 Entrega

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

Page 21: Desarrollo Web Con Php 7 Entrega

• 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 oían: 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 comparación 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

Page 22: Desarrollo Web Con Php 7 Entrega

Una expresion regular es una cadena que describe un conjunto de reglas de comparación. 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 expresión 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 expresión regular SIEMPRE es delimitada por un carácter de inicio y uno de finalizacion. Cualquier carácter puede ser usado para ese fin, desde que ninguna ocurrencia del carácter este dentro de la cadena a comparar en cuyo caso se debe escapear, por convención 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 carácter simple en una expresión. Aqui los metacaracteres mas comunes:

. Coincide con cualquier carácter.

^ Coincide con el inicio de la cadena

Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias ⌫ Pag 22 de 28

Page 23: Desarrollo Web Con Php 7 Entrega

$ Coincide con el fin de la cadena

\s Coincide con cualquier carácter en blanco

\d Coincide con cualquier dígito del 0 al 9

\w Coincide con cualquier carácter alfanumérico

\D Cualquier carácter que no sea un dígito del 0 al 9

\S Cualquier carácter que no sea espacio en blanco

\b Marca el inicio y final de una palabraAdemas 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

* El caracter puede aparecer 0 o mas veces

+ El caracter puede aparecer una o mas veces

? El caracter puede aparecer 0 o una vez

{n,m} 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

Page 24: Desarrollo Web Con Php 7 Entrega

FUNCIONES PCRE PARA EXPRESIONES REGULARES

preg_match(). Chequea el patrón en una cadena alfanumérica. Devuelve true si coincide, o false en caso contrario. Además captura las coincidencias en un array.

• preg_match_all() . Igual que preg_match, pero almacenando todas las subcadenas que coincidan con el patrón (no sólo 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 más de una sustitución con una sola función.

• preg_split() . Separa la cadena dada mediante una expresión regular. • preg_grep() . Busca el patrón dentro de un array, y devuelve otro array con las ocurrencias.

EJEMPLOS EXPRESIONES REGULARES

EJEMPLO 1

$expresion="/\d+/"; //declaramos la expresión 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

Page 25: Desarrollo Web Con Php 7 Entrega

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 murciélago indio comía feliz cardillo y kiwi";

$patrones=array("/veloz/","/indio/","/murcielago/");

$sustituciones=array("lento","africano","galapago");

echo preg_replace($patrones,$sustituciones,$cadena);

Validación numero de tarjeta de crédito visa MUY básica

$expresion="/^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/"; //declaramos la expresión 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

Page 26: Desarrollo Web Con Php 7 Entrega

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 expresión regular a usar

$mail="[email protected]";

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

Page 27: Desarrollo Web Con Php 7 Entrega

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 expresión anterior encontrara la a seguida de la b y c, seguida por cualquier carácter 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

Page 28: Desarrollo Web Con Php 7 Entrega

GUIA DE ESTUDIO

Esta guía le presenta los temas que debe dominar al finalizar la unidad. Como repaso, evalúe su comprensión en cada uno de ellos.

TEMA DOMINADO POR REPASAR

Cadenas de texto y sus diversas formas de creación

Función heredoc.

Secuencias escape

Operaciones con cadenas : largo,transformaciones, comparaciones

Búsquedas simples en cadenas de texto

Formateo de cadenas, números e internacionalización 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