Sunteți pe pagina 1din 23

Variables numricas Almacenan cifras Enteros Real $entero=2002; $real=3.

14159; Numeros sin decimales Numeros con o sin decimal

Variables alfanumricas Almacenan textos compuestos de nmeros y/o cifras Cadenas Almacenan variables alfanumricas $cadena="Hola amigo";

Tablas Almacenan series de informaciones numricas y/o alfanumricas $sentido[1]="ver"; $sentido[2]="tocar"; $sentido[3]="oir"; $sentido[4]="gusto"; $sentido[5]="oler";

Arrays Son las variables que guardan las tablas

Objetos Se trata de conjuntos de variables y funciones asociadas. Presentan una complejidad mayor que las variables vistas hasta ahora pero su utilidad es ms que interesante.
El PHP soporta distintos tipos de datos, que no los tiene que impostar el programador, sino que son asumidos directamente por el motor, siempre que el programador no cambie el tipo (utilizando la funcin settype() ). Los datos pueden ser: Integer; Floating Point number; String; Array; Object.

Vamos a verlos de uno en uno.

INTEGER
Los Integers, o enteros, pueden tener distintos valores nmericos que se expresan con diferentes anotaciones. $a = 18; # decimal $a = -18; # decimal negativo $a = 022; # anotacin octal; es igual a 18 decimales $a = 0x12; # anotacin Hexadecimal, es igual a 18 decimales Probablemente, por lo menos para empezar, tendris que utilizar sobre todo los nmeros

decimales, sin embargo hay que saber que el lenguaje admite incluso otras anotaciones ademas de la decimal.

Floating point number

Este tipo de datos son los nmeros con la coma mvil, por ejemplo, 9.876. La sintaxis para utilizarlos es bastante simple: $a = 9.876; $a = 9.87e6;

Strings

Con respecto a las strings hay mucho ms que decir porque son tipos de datos diferentes. La sintaxis de base es: $string = "Yo soy una cadena"; Si se utilizan las comillas (""), el contenido de la cadena se expande (o, tcnicamente, "interpolado") , como en el ejemplo a continuacin: $num = 10; $string = "El nmero es $num"; Esto visualizar "El nmero es 10". Sin embargo, como con todos los lenguajes, tambin con los PHP tenemos caracteres especiales que tienen que estar anticipados por un smbolo, por ejemplo: $num = 10; $string = "El nmero es "$num""; Los que piensen que el output de este cdigo es 'El nmero es "10"' se equivocan. A parte de que, as como est escrito, el script dara un error de redaccin, las comillas son caracteres especiales, sin embargo, es posible utilizarlas. Por lo tanto la sintaxis correcta para el mando es: $num = 10; $string = "El nmero es \"$num\""; Otros caracteres especiales son: \n -> newline \r -> carriage return \t -> tabulacin \\ -> backslash \$ -> smbolo del dlar

La alternativa a los caracteres de escape, cuando no haya contenidos que extender, son los pices (''); por ejemplo: $string = '$ es el smbol del dlar'; visualizar precisamente los que estn en los pices. Cuidado con un error muy comn: $num = 10; $string = 'El nmero es $num'; no visualizar "El nmero es 10" sino "El nmero es $num". Por lo tanto, podemos decir que con los pices el contenido de la cadena se se hace una transmisin literal, tal como est escrito entre las pices.

Array

El PHP soporta tanto los array escalares como los array asociativos. En PHP un array de valores se puede crear explcitamente definiendo los elementos, o su creacin puede hacerse introduciendo valores en el array. Por ejemplo: $a = ("abc", "def", "ghi"); crea el array definiendo explcitamente los elementos del array, al contrario de lo que ocurre en el ejemplo siguiente: $a[0] = "abc"; $a[1] = "def"; $a[2] = "ghi"; En este caso, el array se crea con tres elementos. Recordemos que el primer elemento de un array se identifica con el nmero "0". Si, por ejemplo, la longitud de una array es "5", ste incluye seis elementos. El elemento que tiene el ndice "0" es el primero del array. Si, en cambio, para aadir elementos a un array (supongamos que nos referimos al que hemos creado arriba) se utilizan los corchetes vacos y los datos se ajustan al array. Por ejemplo: $a[] = "lmn"; $a[] = "opq"; En este caso caso, el array se alarga 2 elementos y resulta ser: $a[0] = "abc"; $a[1] = "def"; $a[2] = "ghi"; $a[3] = "lmn"; $a[4] = "opq"; Este ejemplo es mucho ms til cuando queremos ajustar los elementos al

array sin acudir a funciones especficas y sin tener que leer el nmero de los elementos que estn en el array. Todo se ajustar automticamente y correctamente. Los array asociativos se basan, en cambio, en parejas "name-value" y un ejemplo podra ser: $a = array( "nombre" => "Mario", "apellido" => "Rossi", "email" => "mario@rossi.com", ); Es interesante la posibilidad que tiene la funcin array de introducir las entries, como en el ejemplo que sigue: $a = array( "primero" => array( "nombre" => "Mario", "apellido" => "Rossi", "email" => "mario@rossi.com", ), "segundo" => array( "nombre" => "Marco", "apellido" => "Verdi", "email" => "mario@verdi.com", ) ); Ejecutar en este array una instruccin del tipo: <? echo $a["segundo"]["email"]; ?> visualizar "mario@verdi.com".

Objects

En PHP se pueden utilizar tambin los objetos. Para empezar vamos a ver un ejemplo: class visualiza { function ejecutar_visualiza () { eco "Visualiza un mensaje"; } } $obj=new visualiza; $obj->ejecutar_visualiza(); En primer lugar definimos la clase "visualiza", que incluye la funcin "ejecutar_visualiza" que quiere decir que visualiza simplemente un mensaje en la pantalla. Con la declaracin "new" inicializamos el objeto "$obj" e invocamos la

funcin visualizar con el operador -> en $obj. Como podis ver, utilizar los objetos no es nada difcil aunque, para describirlos ms en detalle, seran neceserario ms explicaciones.

Operadores

Los operadores que se pueden utilizar con PHP son parecidos a los que se utilizan con otros lenguajes de programacin. Para nuestra comodidad, los vamos a dividir en distintas "familias": los operadores aritmticos, los operadores de asignacin y todos los dems.

Operadores aritmticos

Los operadores aritmticos son los ms simples y son: $a + $b -> sumar $a - $b -> restar $a * $b -> multiplicar $a / $b -> dividir $a % $b -> resto Fijmonos un momento en los ltimas dos: El resultado de la divisin no se aproxima al entero que est ms cerca sino que da todo el nmero. El nmero de los caracteres despus del punto se define en el archivo php3.ini en la lnea: precision = 14 Por lo tanto, saldrn slo 14 nmeros despus de la coma, siempre que los haya, como en el ejemplo: $a = 12; $b = 5; $c = $a / $b; echo $c; el resultado es 2.4 y se visualizar precisamente como 2.4, no como 2.40000000000000. Por lo tanto, los 14 decimales se visualizan slo si existen y no indiscriminadamente como ceros intiles. el resto se da por s solo, sin el resultado de la divisin misma. Si en el ejemplo anterior hubieramos utilizado "%" en vez de "/", el resultado habra sido "2".

Asignacin

A menudo, desgraciadamente, los operadores de asignacin se confunden con el operador de identidad. El operador "=" tiene un significado que no hay que confundir con el de "==". El operdaor de asignacin es el smbolo igual a (=) que da a una variable un valor, por ejemplo $a = 2; asigna a "$a" el valor "2". El error que se hace a menudo es escribir algo como: if ($a=2) { do_something; } que, si lo leen ojos inexpertos, podra parecer una expresin para decir que si $a es IGUAL a 2 hay que ejecutar el cdigo que est entre las llaves. Pues bien, no es tan grave: si hubieramos querido escribir lo que acabamos de decir, hubiramos tenido que utilizar: if ($a == 2) { do_something; }

Otros operadores
Los operadores que el PHP nos pone a disposicin son muchos y veremos en est pgina los ms importantes que hasta ahora no hemos tenido la posibilidad de analizar. En particular, hablaremos de los valores booleanos, los matemticos y los de incremento-decremento: $a & $b operador "And" ($a e $b); $a && $b como arriba, pero con una procedencia ms alta; $a | $b operador "Or" ($a o $b); $a || $b como arriba, pero con una procedencia ms alta; $a ^ $b operador "Xor" ($a o $b pero con ambos); !$a operador "Not" (verdadero si $a no es verdadera);

$a == $b operador de igualdad, verdadero si $a tiene el mismo valor que $b; $a != $b lo opuesto de lo de arriba; $a < $b; $a es menor de $b; $a <= $b $a es menor o igual a $b; $a > $b $a mayor que $b; $a >= $b $a es mayor o igual a $b; $a ? $b : $c ste, se utiliza ms con las expresiones que con las variables, evala $b si $a es verdadera, y evala $c si $a es falsa; ++$a incrementa de uno $a y la devuelve; $a++ devuelve $a y la incrementa de uno --$a $a-como los dos anteriores, pero se decrementa el valor;

Estructuras de control

No pueden faltar en un lenguaje de programacin las estructuras de control que permiten que el programador ejecute unas acciones en el programa cuando se dan (o no se dan) determinadas condiciones. IF If permite ejecutar un bloque de noticias si se da (o no se da) una determinada condicin. Su sintaxis es: if (condicin) statement Por ejemplo, queremos que un script nos indique si dos variables son

iguales: $a = 2; $b = 2; if ($a == $b) { eco "\$a es igual a \$b y valen $a.\n"; } If se puede utilizar tambin de forma diferente de la que acabamos de explicar. Aqu hay un ejemplo: <? $a = 2; $b = 2; if ($a == $b) : ?> $a es igual a $b. <? endif; ?> que hace lo mismo que la de arriba. "if" se puede utilizar incluso entre llaves, utilizando "endif" cuando se quiera terminar el bloque "if"; por ejemplo: if ($a == $b) eco "\$a es igual a \$b y valen $a.\n"; endif;

ELSE

Else sirve para "completar" if: con if, de hecho, hemos decidido que ocurra algo cuando se da una condicin. Con else podemos programar qu ocurre cuanda esta condicin no se da. Un ejemplo podra ser: $a = 2; $b = 3; if ($a == $b) { eco "\$a es igual a \$b y valen $a.\n"; } else { eco "\$a es distinta de \$b.\n\$a vale \"$a\" mientras \$b vale \"$b\".\n"; }

ELSEIF

Elseif permite especificar casos no definidos por "if". Un ejemplo podra ser: "Si $a es igual a $b visualiza $a, si $a es distinto de $b visualiza un mensaje de error; avisa si $a no existe, avisa si $b no existe". Slo con if y else no se podra conseguir, sin embargo con elseif se convierte en una oparacin muy simple:

if ($a == $b) { echo "\$a es igual a \$b.\n"; } elseif ($a != $b) { echo "\$a es distinto de \$b.\n"; } elseif (!$a) { echo "\$a no existe.\n"; } elseif (!$b) { echo "\$b no existe.\n"; } Fijaos en dos aspectos: en un bloque pueden estar todos los elseif que necesitis y, para los que conocen el Perl, cuidado con no escribir "elsif" en lugar de "elseif", porque el significado es el mismo pero "elsif" no es reconocido por el PHP as como elseif no es reconocido por el Perl.

WHILE

La condicin "while" se comporta exactamente como en C; la sintaxis de base es: while (expresin) declaracin Como "if", adems, "while" se puede utilizar con o sin corchetes, aadiendo en el segundo caso la declaracin "endwhile". Los dos ejemplos que ponemos a continuacin son lo iguales: /* Primer ejemplo: */ /* $a se incrementa y se visualiza */ /* hasta que su valor no supere "5" */ $a = 1; while ($a <= 5) { print $i++; } /* Segundo ejemplo */ $a = 1; while ($a <= 5) print $i++; endwhile; Traducidas, estas expresiones hacen posible que, hasta que (while) $a sea menor o igual a "5", $a se incrementa de una unidad y luego se visualiza.

FOR

Tambin "for" se comporta exctamente como en C o en Perl. Despus del "for", se tienen que introducir tres expresiones que, mientras devuelvan

"TRUE" permiten la ejecucin de la declaracin que est a continuacin. Vamos a ver el ejemplo: for ($a = 0 ; $a <=10 ; $a++) { print $a; } Esto visualizar los nmeros entre "0" y"10". En las tres expresiones entre parntesis hemos definido que: $a tiene valor "0"; $a es menor o igual a "10"; $a se incrementa de una unidad. Por lo tanto, por cada valor de $a a partir de "0" hasta "10" $a se visualiza.

SWITCH

"Switch" permite sustituir una serie de "if" en la misma expresin y, por supuesto, actuar independientemente del valor de sta: switch ($i) { case 0: echo "\$i vale 0"; break; case 1: echo "\$i vale 1"; break; } Aqu hemos introducido "break" que permite salir de un bloque en el caso de que se realice una condicin establecida.

Abs, acos, array, asin, atan


Vamos a ver ahora, despus de haber visto qu y cules son las variables, qu se hace con ellas y cmo se gestionan los bloques, es decir, pasemos a las funciones. Las funciones son una de las partes ms importantes de un lenguaje de programacin, porque permiten ejecutar unas operaciones en un script. Las funciones que el PHP nos pone a disposicin son muchsimas, y verlas todas sera intil. Por lo tanto nos centraremos en las ms importantes ordenadas alfabticamente. abs: devuelve el valor absoluto de un nmero.

$num = -3.4; $aa = abs($a); echo $aa, "\n"; devolver 3.4 acos: devuelve el arco coseno del argumento. $arg = 1; $arc_cos = acos($arg); echo "$arc_cos\n"; devolver 0. array: vase la explicacin anterior con respecto a estos tipos de datos; asin: devuelve el seno del argumento;

atan: devuelve el arco tangente del argumento;

bcadd, bcdiv, bcmult, bcpow...


base64_decode: descodifica una cadena codificada en MIME base64 (vase abajo); base64_encode: codifica datos en MIME base64; por ejemplo con: $str = "Hola, soy tribiln\n"; echo "$str\n"; $enc_str = base64_encode($str); echo "$enc_str\n"; $dec_str = base64_decode($enc_str); echo "$dec_str\n"; si pasa al script la cadena "$str" que se ha codificado y visualizado antes, despus se vuelve a codificar y a visualizar otra vez; basename: devuelve, estableciendo un recorrido, su componente identificada por un nombre de archivo. Por ejemplo: $path = "/var/www/php/index.php3"; $base = basename($file); echo "$basename\n"; devolver "index.php3"; bcadd: sumar dos nmeros; $num = bcadd(1.334, 4.44554, 2); echo "$num\n";

devolver 5.77. La funcin "bcadd" toma, como los primeros dos argumentos, dos nmeros y, como terceros argumentos opcionales, el nmero de cifras que hay que visualizar despus de la coma; bccomp: compara dos nmeros. La funcin toma como argumento dos nmeros y, como opcin, otro nmero que determina el nmero de decimales que hay que tener en cuenta despus de la coma para considerar los dos nmeros iguales. Devuelve "0" si los dos nmeros son iguales, "+1" si el nmero a la izquierda es mayor que el de la derecha y "-1" si ocurre lo contrario. Fjaos en el ejemplo siguiente: $comp = bccomp(0.334, 0.301, 2); echo $comp; que devolver "1". Pero, si en vez de "2" hubisemos introducido 1 o nada, el resultado sera "0". bcdiv: divide dos nmers, con las mismas modalidades descritas para "bcadd" y "bccomp"; bcmult: multiplica dos nmeros y es posible aadir un parmetro ms para limitar el nmero de cifras despus de la coma: $molt = bcmul(2.31, 3.21, 2); echo "$molt\n"; devolver 7.41; bcpow: eleva a potencia dos nmeros con la posibilidad de especificar el nmero de cifras despus de la coma: $pot = bcpow(2.3, 3, 2); echo "$pot\n"; eleva 2.3 a la tercera potencia, aproximando el resultado a la segunda cifra decimal; bcsqrt: calcula la raz cuadrada de un nmero con la posibilidad de aproximar el nmero de cifras despus de la coma, aadiendo un segundo elemento a la funcin (como ocurra para las dems funciones matemticas vistas antes); bcsub: resta un nmero de otro con la posibilidad de aproximar las cifras despus de la coma: $num = bcsub(2, 5); echo "$num\n"; devolver "-3";

bin2hex: convierte una cadena de datos del formato binario al formato


exadecimal;

Ceil, chdir, checkdate, chgrp...

ceil: devuelve el valor entero ms alto con respecto al nmero que se ha pasado como argumento a la funcin: $num = ceil(3.22112); echo "$num\n"; devuelve "4"; chdir: cambia el directorio de trabajo: $dir = "/var/www/"; chdir($dir); devuelve TRUE si la operacin tiene xito, FALSO en el caso contrario. Por ejemplo si el directorio no se puede leer; checkdate: controla que una fecha sea vlida. Para que sea vlida una fecha tiene que tener: - ao entre "0" y "32767"; - mes entre "1" y "12"; - da entre "0" y el nmero que se refiere al nmero de das del mes al que nos referimos; chgrp: intenta cambiar el grupo de un archivo a "grupo". La funcin acepta como argumentos el nombre del archivo al que queremos cambiar los permisos y el nuevo grupo al que pertenecen: chgrp(filename, grupo); En los sistemas Windows no funciona, sin embargo devuelve siempre verdadero. chmod: es lo mismo que el mando de sistema Unix "chmod" y tiene la misma sintaxis que chgrp; chmop: desplaza los "whitespaces" de una cadena. Se utiliza a menudo para borrar los caracteres "\n" cuando se recibe un argumento del estndar input; el carcter que se elimina se puede leer con: $carcter = chop($string); echo "$carcter\n"; chown: cambia el propietario de un archivo, como el correspondiente mando de sisetma Unix. Acepta como argumento el nombre del archivo y el nombre del nuevo propietario: $file = "prueba.txt"; chown($file, $user); En los sistemas Windows no hace nada y devuelve siempre verdadero (y adems es til introducir esta funcin en un script que no soporta el

"chown"); chr: devuelve el carcter ASCII especificado por el nmero correspondiente. Me imagino que sabris, por ejemplo, que la combinacin "Alt + 0126" devuelve la smbolo (~); se puede ver con este cdigo: $ascii= "0126"; $char = chr($ascii); echo "$char\n"; chunk_split: divide una cadena en partes de "n" caracteres. El nmero puede pasar a la funcin despus de la cadena que hay que dividir. Si no se imposta, de default es asumido como 76. Por ejemplo: $string = "ste es un curso para aprender el lenguaje php": $split = chunk_split($string, 5); devolver: st o es u n cur so pa ra apr ender el l engua je php La funcin es til para el encoding MIME base64 que hemos visto anteriormente con la fucin "base64_encode"; closedir: cierra un directorio que hemos abierto antes con la funcin opendir() - vase; copy: crea la copia di un archivo: $file = "prueba.txt"; copy($file, "$file.bak"); cos: devuelve el valor del coseno del argumento; count: cuenta los elementos en una variable, por ejemplo: $arr[0] = "abc"; $arr[1] = "def"; $arr[2] = "ghi"; $count = count($arr); echo $count; devolver "3", visto que en el array "$arr" hay 3 elementos ($arr[0], $arr[1], $arr[2]); crypt: cripta una cadena; la sintaxis de la funcin crypt() es:

crypt(string, salt); Prcticamente tendramos que pasar a la funcin la cadena que tendr que ser criptada y, como opcin, el signo con el que la criptamos. Si ste no pasa a la funcin, se dar de forma random del PHP mismo. Un ejemplo podra ser el siguiente: $var = "sta es una variable"; $crypt = crypt($var, "aa"); echo $crypt; que devolver la cadena criptada;

current: devuelve el primer elemento de un array:


$arr[0] = "abc"; $arr[1] = "def"; $arr[2] = "ghi"; $current = current($arr); echo $current; visualizar "abc";

Debugger_off, date, decoct...


date: visualiza la fecha en un formato que se puede definir. La funcin reconoce como vlidos los siguientes formatos: a: am/pm; A: AM/PM d: da del mes con dos cifras, entre "0" y "31"; D: da del mes en formato texto, por ejemplo "Mon"; F: mes, en formato texto, por ejemplo "March"; h: hora en el formato "01", "12"; H: hora en el formato "00", "23"; g: hora en el formato "1", "12"; G: hora en el formato "0", "23"; i: minutos, en el formato "00", "59"; j: da del mes en el formato "1", "31"; l: da de la semana, por ejemplo "Monday"; L: especifica si el ao es bisiesto o no ("1" o "0"); m: mes en el formato "01", "12"; n: mes en el formato "1", "12"; M: mes en formato texto corto, por ejemplo "Jan"; s: segundos entre "00" y "59"; S: sufijo ingls para los ordinales, "st", "nd", "rd", "th"; t: nmero de das del mes en curso, entre "28" y "31"; w: da de la semana en formato numrico ("0"=domingo); Y: ao en cuatro cifras, por ejemplo "2000"; y: ao en dos cifras, por ejemplo "00";

Por ejemplo se podra escribir: echo (date("l d F y H:i:s a)); para tener la fecha en curso que, por ejemplo, podra ser: Friday 23 June 00 11:45:48 am debugger_off: inhabilita el depurador PHP; debugger_on: habilita el depurador PHP; decibin: convierte un nmero decimal en otro binario; por ejemplo, el nmero "10" decimal es "1010" en formato binario, y con el cdigo PHP podemos escribir: $bin = decbin(10); echo $bin, "\n"; que devuelve precisamente "1010"; dechex: convierte un nmero decimal en otro exadecimal; la sintaxis es igual a la que se ha utilizado para "decbin()"; decoct: convierte un nmero de formato decimal en otro de formato octal; la sintaxis es la misma que se ha utilizado para "decbin()"; define: define una constante. Como hemos visto en el captulo de las constantes, stas son parecidas a las variables, lo nico es que no llevan el smbolo del dlar delante. Para definir una constante se utiliza la siguiente sintaxis: define("CONSTANTE", "sta es una constante"); echo CONSTANTE; El ejemplo visualiza "sta es una constante"; defined: controla si existe una constante ya establecida. Por ejemplo, podra ser: define("CONSTANTE", "sta es una constante"); if (defined("CONSTANTE")) { echo "La constante se ha definido\n"; } else { echo "La constante no se ha definido\n"; } que visualiza un mensaje segn la constante se haya definido o no; die: visualiza un mensaje y sale del programa: if (defined($num)) { echo "\$num se ha definido\n"; } else { die ("\$num no se ha definido; imposibile seguir adelante\n");

} dirname: cuando se especifica un path, devuelve el path sin el nombre del archivo final: si por ejemplo el path es "/home/yourname/public_html/index.php3" la funcin devolver solamente "/home/yourname/public_html": $path = "/home/yourname/public_html"; echo(dirname($path)); Os habis dado cuenta de que esta funcin hace exctamente lo contrario de la funcin "basename()". Si combinamos las dos funciones, se puede obtener el path completo de un archivo, incluso su nombre;

diskfreespace: devuelve el espacio del disco que est libre; si queremos,


por ejemplo, ver cul es el espacio que nos queda en el directorio root del equipo, podemos escribir: echo(diskfreespace("/"));

Each, echo, ereg_replace, ereg...


each: devuelve el primer valor de un array utilizando las claves 0, 1, key y value; si el array es asociativo, se puede escribir: $array = array ("nombre" => "valor", "nombre2" => "valor2"); while (list($key, $val) = each ($array)) { echo "$key => $val\n"; } que devuelve: nombre => valor nombre2 => valor2 Si, en cambio, el array no es asociativo, el cdigo ser: $array = array ("nombre", "valor", "nombre2", "valor2"); while (list($key, $val) = each ($array)) { echo "$key => $val\n"; } y el resultado: 0 => nombre 1 => valor 2 => nombre2 3 => valor2 Seguramente os habis fijado en que la funcin "each()" a menudo se utiliza junto a "list()", que veremos a continuacin;

echo: visualiza una o ms cadenas. No creo que haya mucho que comentar sobre esta funcin, en principio porque es muy simple y adems porque ya la hemos analizado y hemos visto como funciona. ereg_replace: devuelve una expresin regular con valores establecidos. En la funcin hay que incluir tres argumentos: el primero indica el texto que hay que sustituir, el segundo es el texto que se est utilizando y el tercero es la cadena que hay que modificar. Por ejemplo: $stringa = "ste es un curso ASP"; echo ereg_replace("ASP", "PHP", $cadena); Se hubiera podido escribir tambin: echo ereg:replace("ASP", "PHP", "ste es un curso ASP"); que, sin embargo, no tendra mucho sentido. ereg: ejecuta el matching de una expresin regular. El ejemplo que se encuentra en la documentacin es bastante claro: if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) { echo "$regs[3].$regs[2].$regs[1]"; } else { echo "Invalid date format: $date"; } Todo el procedimiento se desarrolla para controlar que una fecha est escrita en un formato correcto. Vamos a ver el significado de "[0-9]{4})-([09]{1,2})-([0-9]{1,2}". Para los que conocen las expresiones regulares, no ser difcil traducirlo con "un nmero entre 0 y 9 que hay que repetir cuatro veces y que tiene que astar seguido de un '-', de un nmero entre 0 y 9 repetido una o dos veces, de un '-' y de un nmero entre 0 y 9 repetido una o dos veces". Muy a menudo es mucho ms simple leer una expresin regular que traducirla al lenguaje hablado. eregi_replace: funciona exctamente como "ereg_replace()", solamente que, en este caso, la expresin regular se sustituye por una forma "case insensitive", es decir, pasando de los caracteres maysculas y minsculas; eregi: funciona excatmente como "ereg()", solamente que en este caso la expresin regular se sustituye mediante una forma "case insensitive"; error_log: enva un mensaje de error al archivo de log del servidor, directamente a la puerta TCP de la que ha llegado la solicitud o a un archivo. La sintaxis es: error_log(message, mesage_type, destination); Message_type es un nmero que especifica donde tiene que llegar el mensaje Puede ser: 0: el mensaje se enva al logger del PHP o al archivo especificado por

"error_log"; 1: el mensaje se enva por email al parmetro (probablemente una direccin email vlida) especificado en "destination"; 2: el mensaje se enva al depurador; 3: el mensaje se introduce en append en el parmetro especificado en destination"; escapeshellcmd: si se invoca un mando exterior de una shell, con este mando se consigue que delante de los metacaracteres de la shell haya un carcter de escape para evitar que el mando produzca errores; exec: ejecuta un programa externo; exit: sale de un script; el mando "exit()" es til cuando se quiere parar un script siempre que no se cumplan unas condiciones, por ejemplo: if (condicin) { ejecutar el bloque; } else { exit; } Recordad que "exit()" no lleva un mensaje de error como "die()": si os interesa dar "explicaciones" sobre el porqu el script termina, hay que utilizar "die()", pero no es posible escribir: exit "Salir del programa\n"; o mejor, es posible pero no tiene ningn efecto excepto el de salir; exp: eleva "e" (2.71828.....) a la potencia que es el argumento de la funcin: echo exp(3); devolver: 20.0855369...

explode: divide una cadena segn un determinado pattern. Por ejemplo,


si queremos dividir una cadena que incluye tres nombres separados por comas, podemos escribir: $nombres = "Fulano,Mengano y Zutano"; list ($nombre1, $nombre2, $nombre3) = explode (",", $nombres); echo "$nombre1\n$nombre2\n$nombre3\n"; que devolver: Fulano Mengano Zutano Explode() es una versin simplificada de "split() que veremos sucesivamente. Las dos funciones, adems, son muy tiles cuando tenemos la necesidad de leer unos archivos incluidos en los listados.

Fclose, feof, filegroup, filesize...


fclose: cierra un puntero en un archivo que se ha abierto antes con fopen(). Vase fopen() para ms informaciones; feof: controla un puntero en un archivo para ver si est al final del mismo; fgetc: restituye el primer carcter del puntero que se ha abierto antes con fopen(). Si, por ejemplo, el puntero $file seala el archivo "/tmp/prova.txt" que incluye solamente la lnea "Hola", aparecer un cdigo como el siguiente: $char = fgetc($file); echo "$char\n"; devolver "C" (por supuesto sin comillas); file_exists: controla si un archivo existe, en este caso dar TRUE sino FALSE, por ejemplo : if (file_exists($file)) { print "$file esiste; } Puede ser muy til utilizar esta funcin cuando necesitamos intervenir en uno o ms archivos para actuar sobre el mismo slo si ste existe sin arriesgarse a inexplicables "anomalas" del script; filegroup: devuelve el grupo al que pertenece el archivo: $filename = "/tmp/prueba.txt"; $group = filegroup($filename); echo "$filename pertenece al gruppo $group\n"; Obviamente, la funcin se implementa slo en los sistemas multiuser; filesize: devuelve la domensin de un archivo: $filename = "/tmp/prueba.txt"; $size = filesize($filename); echo "$filename -> $size\n"; filetype: determina el tipo de archivo; los valores posibles son: fifo, char, dir, block, link, file y unknown; flock: aplica el locking a un archivo; de modo especfico flock() opera en un puntero en un archivo que se ha abierto antes y las operaciones posibles son: 1: para el lock en lectura; 2: para el lock en escritura;

3: para quitar el lock, cualquiera que sea el tipo; 4: para impedir que flock() bloquee un archivo cuando aplica el lock; Por ejemplo, para aplicar flock() en un puntero "$file" definido antes, se necesita escribir: flock($file, 2); /* Para impedir que el archivo se lea*/ ..... /* Cdigo para trabajar en el archivo */ flock($file, 3); /* Para quitar el flock */

fopen: abre un archivo o un URL. La sintaxis es:


fopen(filename, mode); Obviamente a "filename" le corresponde el nombre del archivo o el URL del mismo, y a "mode" la modalidad con la que se tiene que abrir. Aqu se puede elegir entre: r -> abre el archivo slo cuando se lee; r+ -> abre el archivo cuando se lee y se escribe; w -> abre el archivo slo cuando se escribe; w+ -> abre el archivo cuando se lee y se escribe; a -> abre el archivo slo cuando se escribe e introduce el puntero al final del archivo ("w" lo introduce al final) a+ -> abre el archivo cuando se lee y se escribe introduciendo el puntero al final del archivo; Por ejemplo, para abrir un archivo local slo para leerlo tendremos que escribir: $file = fopen("/tmp/prueba.txt", "r"); Para un URL, en cambio: $file = fopen("http://www.myhost.com/index.html", r"); Para todas las sucesivas operaciones en el archivo, adems, tendremos que actuar directamente sobre el puntero ($file) y no directamente sobre el archivo.

Header, hexdec, implode, in_array...


header: enva cualquier header HTTP; por ejemplo: header("Pragma: no-cache"); Esta funcin es muy til en distintos casos: por ejemplo, para forzar una autorizacin se puede enviar un "401", etc.;

hexdec: devuelve el valor decimal de un nmero exadecimal; implode: como se puede entender por el nombre, esta funcin no es nada ms que lo contrario de "explode". La sintaxis es igual, pero en este caso devuelve una cadena con los valores separados del primer argumento y la funcin; in_array: devuelve valor verdadero si en un array hay un determinado valor. Un ejemplo podra ser: $nmeros = array("1", "2", "3", "4", "5"); $num = 2; if (in_array($num, $nmeros)) { print "$num est en el array \$nmeros\n"; } is_array: controla si una fecha variable es un array: if (is-array($var)) { echo "\$var es un array\n"; } Lo mismo ocurre con las funciones siguientes, con la nica diferencia del argumento: - is_dir; - is_double; - is_executable; - is_file; - is_float; - is_int; - is_integer; - is_link; - is_long; - is_object; - is_readable; - is_real; - is_string; - is_writeable. isset: devuelve TRUE si existe la variable, falso si no existe. Por ejemplo, para ver si existe o no una variable es posible escribir: $a = 10; echo isset($a), "\n"; echo isset($b), "\n"; que devolver 1 y 0. recordemos que 1 se considera valor positivo (TRUE), 0 negativo (FALSE); join: une los elementos de un array con una cadena determinada; el uso es igual al de implde(); key: toma una clave de un array asociativo. Un ejemplo simple puede ser:

$array = array("1" => "uno"); $clave = key($array); echo "$clave\n"; que devolver "1". Esta funcin es til pata retomar todas las claves de los array asociativos complejos; link: crea un hard enlace. La sintaxis es: link(target, link); Las informaciones sobre los enlaces (a propsito de la existencia del archivo al que se refiere el enlace mismo) se pueden visualizar con linkinfo();

list: da unas variables como si fueran partes de un array. Volvamos al


ejemplo que hemos hecho con each: $array = array ("nombre" => "valor", "nombre2" => "valor2"); while (list($key, $val) = each ($array)) { echo "$key => $val\n"; } En este caso, list() se utiliza para "redactar" una lista de variables que se recogern del array sin darles un valor sino dejando a las partes sucesivas del cdigo la asignacin de sus valores. Adems hay que notar que las variables creadas por list() no tienen slo un valor, sino que cada vez que se invocan tienen un valor diferente, segn los elementos que se encuentran en el array.

S-ar putea să vă placă și