Desarrollo Web Con PHP 7 Entrega
Desarrollo Web Con PHP 7 Entrega
Desarrollo Web Con PHP 7 Entrega
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
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.
SINTAXIS strtr($cadenaacomparar, caracteresparareemplazar, caracterdereemplazo) EJEMPLO 1: $mensaje = "los zapoz en la lahuna ... "; echo strtr($mensaje,"zh","sg");
Desarrollo web con PHP, MYSQL, AJAX paso a paso. Walter Arias Aguirre @waltarias
Pag
8 de 28
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
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()
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");
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:
. ^
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
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
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