PHP – Linux Introducción Goi eskola politeknikoa CAPÍTULO I..................................................................................3 INTRODUCCIÓN....................................................................................................3 1.1Histor ia de PHP........ ............................................................................3 1.2Car acterísticas... ................................................................................. 3 CAPITULO II.................................................................................5 INSTALACIÓN YCONFIGURACIÓNDELINTÉRPRETE PHP.......................................................5 1.1Insta lación de PHP como intérprete........... .........................................5 1.1.1Teste ar el intérprete de PHP.........................................................7 1.2Insta lación de PHP como módulo interno de Apache...................... ....8 1.2.1Teste ar el módulo PHP................................................................12 CAPITULO III...............................................................................14 INCLUSIÓNDECÓDIGO PHP ENPÁGINAS HTML..........................................................14 1.1Intro ducción......................................................................................14 1.3Configur ación del intérprete. .............................................................17 CAPITULO IV...............................................................................19 LENGUAJE PHP................................................................................................19 1.1Sintaxis básica..... .............................................................................19 1.4Var iables...........................................................................................19 1.4.1Variables de Variables ...............................................................20 1.4.2Ambito de las variables.. .............................................................22 1.4.3Variables Estáticas......................................................................23 1.4.4Variables Predefinidas................................................................23 1.5Tipos de datos..... .............................................................................. 24 1.5.1Simples ................................................................................... ....24 1.5.2Enteros........................................................................................25 1.5.3Coma flotante.............................................................................26 1.5.4Booleanos...................................................................................27 1.5.5Cadenas de caracteres...............................................................27 1.5.6Tipos de datos Complejos...........................................................29 1.5.7Arrays.........................................................................................29 1.5.8Funciones de gestión de tipos de datos......................................31 1.6Const antes........................................................................................ 33 1.7Opera dores........................................................................................34 1.8Estruct uras de control.......................................................................36 1.8.1“If” vs “?:”...................................................................................36 1.8.2For...............................................................................................39 1.8.3Foreach.......................................................................................40 1.8.4While...........................................................................................42 1.8.5Do … while..................................................................................43 1.8.6Break y continue.........................................................................44 1.8.7Switch......................................................................................... 45 1.9Funciones ..........................................................................................46 1.9.1Def inicion....................................................................................46 1.9.2Ejecucion.....................................................................................47 1.9.3Paso de parametr os....................................................................47 1.9.4Recur sividad...............................................................................48 1.10Funcione s especificas: cadenas de caracteres, fechas, arrays........49 1.10.1Fechas.......................................................................................49 1.10.2Cadenas de caracter es.............................................................55 Informatika saila 1
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
1.1Historia de PHP....................................................................................31.2Características....................................................................................3
INSTALACIÓN Y CONFIGURACIÓN DEL INTÉRPRETE PHP.......................................................51.1Instalación de PHP como intérprete....................................................5
1.1.1Testear el intérprete de PHP.........................................................71.2Instalación de PHP como módulo interno de Apache..........................8
1.2.1Testear el módulo PHP................................................................12
INCLUSIÓN DE CÓDIGO PHP EN PÁGINAS HTML..........................................................141.1Introducción......................................................................................141.3Configuración del intérprete..............................................................17
1.4.1Variables de Variables ...............................................................201.4.2Ambito de las variables...............................................................221.4.3Variables Estáticas......................................................................231.4.4Variables Predefinidas................................................................23
1.5Tipos de datos...................................................................................241.5.1Simples.......................................................................................241.5.2Enteros........................................................................................251.5.3Coma flotante.............................................................................261.5.4Booleanos...................................................................................271.5.5Cadenas de caracteres...............................................................271.5.6Tipos de datos Complejos...........................................................291.5.7Arrays.........................................................................................291.5.8Funciones de gestión de tipos de datos......................................31
1.6Constantes........................................................................................331.7Operadores........................................................................................341.8Estructuras de control.......................................................................36
1.8.1“If” vs “?:”...................................................................................361.8.2For...............................................................................................391.8.3Foreach.......................................................................................401.8.4While...........................................................................................421.8.5Do … while..................................................................................431.8.6Break y continue.........................................................................441.8.7Switch.........................................................................................45
1.9Funciones..........................................................................................461.9.1Definicion....................................................................................461.9.2Ejecucion.....................................................................................471.9.3Paso de parametros....................................................................47
1.9.4Recursividad...............................................................................481.10Funciones especificas: cadenas de caracteres, fechas, arrays........491.10.1Fechas.......................................................................................491.10.2Cadenas de caracteres.............................................................55
1.10.3Arrays.......................................................................................63CAPITULO V...............................................................................................66SERVICIO WEB Y EL PROTOCOLO HTTP....................................................................66
1.1Funcionamiento del servicio Web......................................................661.11Codificacion de los URLs..................................................................661.12Funcionamiento del protocolo http detallado..................................671.13Metodos del protocolo http.............................................................681.14Campos de las cabeceras http........................................................681.15Mensajes de Respuesta...................................................................69
1.15.1Campos de los mensajes de respuesta.....................................70FORMULARIOS..................................................................................................72
1.1Procedimiento de envío/recepción de formularios en http................721.15.2Método GET..............................................................................721.15.3Método HEAD............................................................................74
1.15.4Método POST.............................................................................741.15.5¿Cómo subir ficheros?...............................................................741.16Diferencias entre los diferentes de métodos...................................75
CONEXIONES A BASES DE DATOS............................................................................771.1Introducción......................................................................................771.17Tipos de conexiones a bases de datos............................................77
1.17.1Conexiones normales................................................................771.17.2Conexiones persistentes (ventajas e inconvenientes)..............77
1.18Conexión a una base de datos mySQL............................................781.18.1Uso de la conexión y selección de la base de datos.................801.18.2Cierre de la conexión................................................................801.18.3Obtención de metainformación de la base de datos: El
diccionario de datos............................................................................801.18.4Consultas: selección, borrado y modificación...........................821.19Manejo de errores...........................................................................851.20Gestión del acceso concurrente......................................................86
APENDICE – RESUMEN HTML ..............................................................................88ELEMENTO......................................................................................................89DESCRIPCIÓN...................................................................................................89
PHP es un lenguaje que permite la generación de contenido dinámico en unservidor web, por tanto se trata de un lenguaje como ASP, o JSP porejemplo.
Su nombre oficial es PHP que significa HyperText Preprocessor. Fuedesarrollado por Rasmus Lerdorf con una pequeña biblioteca de funcionespara añadir más capacidades a las páginas web.
Esta pequeña biblioteca inicial llamada PHP/FI y posteriormente PHP 2.0 enpoco tiempo gano mucha popularidad gracias a sus características. Esteconjunto de herramientas fue rehecho por Zeev Suraski y Andi Gutmans yse le llamo desde entonces PHP3, posteriormente se rediseño por completoel intérprete añadiéndole mas funciones y siendo más eficiente para dar
lugar al que conocemos como PHP4.
1.2 Características
PHP es un lenguaje de programación que posee características de C, de Perly Java, además su sintaxis es parecida a la de estos lenguajes lo que fácilitaa las personas que los conozcan su aprendizaje.
• Dispone de muchas bibliotecas para realizar todo tipo de tareas:• Preprocesamiento de ficheros.• Funciones de tratamiento de textos.• Generación dinámica de imágenes.• Tratamiento de documentos XML• Soporte de múltiples protocolos de comunicaciones estándares: HTTP,
IMAP, FTP, LDAP, SNMP, POP, …• Su código fuente es abierto.• Es gratuito: no es necesario pagar por la obtención de este lenguaje.• Es multiplataforma lo que garantiza su portabilidad.• Consume pocos recursos haciendo que sea un lenguaje muy eficiente.
Instalación y configuración delintérprete PHP.Existen varios procedimientos de instalación y configuración de PHP enfunción de las necesidades que tengamos.
Estas necesidades serán disponer del intérprete de PHP como tal, es decircomo intérprete, tenerlo como CGI o bien el caso más habitual tenerlo comomódulo del servidor web Apache (u otros).
A continuación se explicarán cada de las diferentes formas de instalarlosegún el contexto de nuestra necesidad.
1.1 Instalación de PHP como intérprete
Para instalar PHP como intérprete vamos a seguir el procedimiento mas fácilde los existentes.
La secuencia de pasos a seguir es la siguiente (suponiendo que la versiónque vamos a utilizar es la 4.3.1):
• Descargar el codigo fuente comprimido desde:http://www.php.net/get/php-4.3.1.tar.gz/from/a/mirror una vez aquí deberemos elegir uno de los mirrors existentes.
• Copiar el fichero descargado en el directorio adecuado:
$ cp php-4.3.1.tar.gz /usr/local/src
• Descomprimir el fichero:
$ tar xvzf php-4.3.1.tar.gzphp-4.3.1/php-4.3.1/build/...
• Configurar la compilación (usamos aquí las opciones de configuraciónestándar; si deseamos algo diferente o especial deberemos consultarla documentación de instalación para ver los detalles):
$ ./configure --prefix=/usr/local/bin/php-4.3.1loading cache ./config.cachechecking for Cygwin environment... (cached) nochecking for mingw32 environment... (cached) no...+----------------------------------------------------------+| License:|| This software is subject to the PHP License, available in| this distribution in the file LICENSE. By continuing this| installation process, you are bound by the terms of this| license agreement.| If you do not agree with the terms of this license, you| must abort the installation process at this point.|+----------------------------------------------------------+| *** NOTE ***|| The default for register_globals is now OFF!
|||| If your application relies on register_globals being ON,| you should explicitly set it to on in your php.ini file.|| Note that you are strongly encouraged to read|| http://www.php.net/manual/en/security.registerglobals.php| about the implications of having register_globals set to| on, and avoid using it if possible.|
+----------------------------------------------------------+Thank you for using PHP.
1.2 Instalación de PHP como módulo interno deApache
Para poder instalar PHP como módulo interno de Apache primerodeberemos tener instalado Apache para poder reconfigurarlo con el nuevomódulo.
Entonces la secuencia de pasos mínima a seguir es la siguiente:
• Descargar el codigo fuente comprimido desdehttp://www.php.net/get/php-4.3.1.tar.gz/from/a/mirror una vez aquí deberemos elegir uno de los mirrors existentes.
• Los siguentes dos pasos son iguales:
$ cp php-4.3.1.tar.gz /usr/local/src$ tar xvzf php-4.3.1.tar.gz.
.
.$
• A continuación es cuando vienen las diferencias, ya que hay volver areconfigurar apache sino lo habiamos hecho antes (para ello debemosdisponer del código fuente de Apache descargado y desempaquetadoen un directorio previamente):
Configuring for Apache, Version 1.3.27+ using installation path layout: Apache (config.layout)Creating MakefileCreating Configuration.apaci in src...Creating Makefile in src/mainCreating Makefile in src/lib/expat-liteCreating Makefile in src/modules/standard$
make[1]: Entering directory `/usr/local/src/apache_1.3.27'===> [mktree: Creating Apache installation tree]./src/helpers/mkdir.sh /usr/local/apache/bin...+--------------------------------------------------------+| You now have successfully built and installed the || Apache 1.3 HTTP server. To verify that Apache actually || works correctly you now should first check the || (initially created or preserved) configuration files || |
| /usr/local/apache/conf/httpd.conf| || and then you should be able to immediately fire up |
loading cache ./config.cachechecking for Cygwin environment... (cached) nochecking for mingw32 environment... (cached) no...+----------------------------------------------------------+| License:|| This software is subject to the PHP License, available in| this distribution in the file LICENSE. By continuing this| installation process, you are bound by the terms of this| license agreement.| If you do not agree with the terms of this license, you| must abort the installation process at this point.|+----------------------------------------------------------+| *** NOTE ***|| The default for register_globals is now OFF!|||| If your application relies on register_globals being ON,| you should explicitly set it to on in your php.ini file.|| Note that you are strongly encouraged to read|| http://www.php.net/manual/en/security.registerglobals.php| about the implications of having register_globals set to| on, and avoid using it if possible.|+----------------------------------------------------------+
Ahora nos toca compilar el módulo PHP.Pero debemos tener cuidado en unaspecto: si por alguna razón necesitamos compilar PHP varias veces, antesde hacer cada vez debemos ejecutar:
Ahora debemos copiar el fichero de configuración (llamado php.ini) de ladistribucion (la plantilla de base se llama php.ini-dist) al directorio lib de PHPy echar una ojeada por si queremos modificar alguno de los parámetros quevienen establecidos por defecto.
# cp php.ini-dist /usr/local/php-4.3.1/lib/php.ini# vi /usr/local/php-4.3.1/lib/php.ini
Una vez hecho esto debemos terminar de configurar Apache.
ApacheDeberemos configurar apache para que realice las siguientes tareas:
• Configurar apache para que cargue el módulo de PHP.• Configurar apache para que reconozca el nuevo tipo de ficheros:
.php y los asocie con el módulo de PHP para interpretarlos.
Para realizar estas tareas deberemos modificar fichero de configuraciónprincipal de Apache llamado httpd.conf y añadir las dos líneas siguientes:
Si utilizamos un navegador y accedemos a la página holamundo.phpveriamos lo siguiente:
Mi primera pagina PHP
Esto quiere decir que ya está operativo.
En todo caso, la opción más recomendable es usar directamente la versiónprecompildada y pre-empaquetada de nuestra distribución de Linux. Esonos asegurará que ha sido testeada ampliamente tanto por los creadores dela distribución como por los miles de usuarios de la misma.
Como ventaja adicional, nos aseguramos de que los posibles problemas quesurjan con la versión de la distribución (así como los agujeros de seguridadque se detecten y corrijan) serán resueltos con las actualizaciones quepublicará nuestra distribucion.
Sólo en caso de que la versión del intérprete tenga deshabilitada algunaopción que nos sea necesaria merecería la pena la compilación desde cerodel intérprete como se ha mostrado en los puntos anteriores.
Hay varias formas de incluir código PHP en las páginas:• Utilizando las etiquetas <?php y ?> (es el método recomendado)• Empleando las etiquetas cortas o “short tags” <? y ?> . Para poder
utilizar éstas debe estar habilitada la opción “short_open_tags” en elfichero de configuración php.ini .
• Con la etiqueta <SCRIPT Language=”php”> y </SCRIPT> de HTML.• Con las etiquetas <% y %>. Para poder utilizar éstas debe estar
habilitada la opción “asp_tags” en el fichero de configuración php.ini.(desaconsejado).
Realicemos un ejemplo con cada una de estas formas de incluir código PHP.
Ejemplo 1: Etiquetas <?php y ?>.
Crearemos una página llamada index.php y en ésta incluiremos el siguientecódigo:
Lo primero que debemos realizar es comprobar si el fichero php.ini tienehabilitada la opción de “short_open_tags”.
Lo que vamos a realizar es en primer lugar la habilitacion de dicha opción yejecución de la página php para ver que ocurre. Para realizar estastareas es necesario reiniciar el servidor para que cargue de nuevoel módulo y este lea el fichero de configuración (siempre y cuandose haya instalado como módulo del servidor).
Entonces el primer paso será modificar el php.ini para disponer de los tags:
; Allow the <? tag. Otherwise, only <?php and <script> tags; are recognized.
short_open_tag = Off ← On
posteriormente reiniciamos el servidor de páginas:
y modificamos la página inicial con los nuevos tags:
<html><head>
<title>Pagina del curso de PHP
</title><head>
<body><br><br><center>
<font face="verdana" size=2><%
echo "Mi primera pagina php"%></center>
</body></html>
y obtendríamos la misma página que en el caso anterior.
1.3 Configuración del intérprete
El intérprete de PHP se configura a través del fichero php.ini (php3.ini en laversión PHP3) como ya se ha mencionado anteriormente.
Este fichero es leído cada vez que el intérprete se pone enfuncionamiento. Si se ha instalado como módulo del servidor solose lee en el momento de iniciar el servidor.
El fichero de configuración contiene directivas que controlan los siguientesaspectos:
• Opciones del Lenguaje.• Limitación de recursos.• Manipulación de errores y registro de accesos.• Manipulación de datos.• PATHs y directorios.• Extensiones dinámicas.• Configuración especifica de módulos.
Otros detalle importante que pueden ahorrar múltiples problemas es laubicación del fichero de configuración de PHP.
La secuencia de búsqueda es la que se indica a continuación:
• Directorio de trabajo donde reside el intérprete.• En el PATH indicado por la variable de entorno PHPRC• En el directorio donde se compilo el intérprete o en su defecto, en el
directorio que se especifico durante la fase de configuración delintérprete.
Otro aspecto relacionado con la sintaxis es que PHP es sensible alas mayúsculas y minúsculas, o dicho en jerga técnica “casesensitive”.
En PHP al igual que otros lenguajes interpretados no hace falta “declarar”las variables ni el tipo de datos de las mismas.
En PHP cuando se utiliza una variable por primera vez “automáticamente esdeclarada” y su tipo queda determinado por la clase de información quecontenga.
Un ejemplo de este proceso especial de declaración de variables seria elsiguiente:
$Edad =120 ← Se ha declarado la variable Edad de tipo enteropor tener el contenido inicial de 120 que es un
valor entero.
Como se puede ver también la asignación se rea-liza con el símbolo “=”
1.4 Variables
En PHP todos los nombres de variables comienzan por el símbolo “$” estoindica que se trata de una variable.
Las normas de creación de identificadores de variables son:
• El primer carácter debe ser el símbolo “$”• El segúndo carácter debe ser una letra o el símbolo “_”.• Y a continuación cualquier secuencia de letras, dígitos o símbolos “_”.
Un posible expresión regular que define esto sería:
$[letra|_]+[letra|digito|_]*
Ejemplos de variables que siguen las normas serían:
Y Ejemplos de variables que no siguen las normas serían:
$!peso$+_peso
En estos casos mostrara un mensaje como este:
Parse error: parse error, expecting `T_VARIABLE' or `'$'' in/var/www/index.php on line 13
1.4.1Variables de Variables
PHP tiene la posibilidad de incorporar variables especiales donde elcontenido de estas variables se interpretan como el nombre de otrasvariables (siempre que dicho contenido sea un identificador válido denombre de variable).
Esto se puede llevar a cabo de la manera siguiente:
$Edad = ’Peso’;
Ahora si quisiésemos inicializar el contenido de la variables $Pesotendríamos dos formas posibles de hacerlo:
• Usando directamente la variable final:
$Peso = 85;
• Usando variables de variables. Para ello basta con usar dos '$' en elnombre de la variable de variables:
Éste es otro aspecto que es importante tener en cuenta de cara a nollevarse sorpresas en el contenido de las variables.
En PHP existen dos tipos de variables:
• Locales: que es cuando una variables se “crea” dentro del ámbito deuna función, es decir sólo es accesible dentro de la función. Su valor sólose conserva dentro de la función, cuando la función ha terminado lavariable desaparece.
• Globales: cuando no esta dentro de ninguna función. Su valorpermanece accesible para todas las variabless del script, pero no dentrode una función.
Para que una función pueda acceder a una variable global en principio sólocabria referenciarla, pero existe un problema. Como el ámbito es local lavariable referenciada no tendría efecto sino que se crearía una nueva conese nombre (recuerde que en PHP no existe la declaración de variables yque se crean automáticamente la primera vez que se usan). Para evitar estodebemos etiquetar la variable con la palabra reservada global y entoncesno habría ningún problema:
$variable_global1 = 'esta es una variable global';$variable_global2 = 'esta es otra variable global';
function mi_funcion () {global $variable_global2; // Esta si es global
// Lo siguiente modifica la varible local// $variable_global1$variable_global1 = 'nuevo valor local';
// Esto modifica la variable global.$variable_global2 = 'nuevo valor global';
En el punto anterior se ha explicado que es una variable local o global, pero
que ocurre si queremos que el valor de una variable local no pierda su valorcuando la función finaliza.
La solución es utilizar una palabra reservada: static que le indique a PHPque debe permanecer su valor entre invocaciones de la función.
1.4.4Variables Predefinidas
Existe un conjunto de variables predefinidas de PHP (sólo si hemoshabilitado la opción “register_globals” a partir de la versión 4.3.x, que vienedeshabilitado por defecto) que se pueden ver en la siguiente figura. En caso
de no tener register_globals activado (recomendado), se pueden acceder aesos mismos valores usando las variables superglobales que se indican ennegrita:
Variable Contenido$argv
$_ENV['argv']Array de argumentos pasados en la ejecucióndel script.Requiere que la directiva register_argc_argv esté habilitada.
$argc$_ENV['argv']
Número de argumentos pasados en la ejecucióndel scriptRequiere que la directiva register_argc_argv
esté habilitada.$PHP_SELF
$_SERVER['PHP_SELF']
Nombre del script que se está ejecutando. SiPHP está instalado en modo CGI, aparece con elPATH del intérprete junto con el nombrecompleto desde el directorio raíz del servidorweb. Si se desea evitar se puede poner basename($PHP_SELF) .
$HTTP_COOKIE_VARS$_COOKIE
Array asociativo (o en terminología Perl HASH )de pares [Clave,Valor] pasados a través de lasCOOKIES.
$HTTP_GET_VARS
$_GET
Array asociativo (o en terminología Perl HASH)
de pares [Clave,Valor] pasados usando elmétodo GET.$HTTP_POST_VARS
$_POSTArray asociativo (o en terminologia Perl HASH )de pares [Clave,Valor] pasados usando elmétodo POST.
$HTTP_POST_FILES$_FILES
Array asociativo (o en terminología Perl HASH )de pares [Clave,Valor] pasados usando elmétodo POST y que contiene información de losficheros recibidos.
$HTTP_ENV_VARS$_ENV
Array asociativo (o en terminología Perl HASH )de pares [Clave,Valor] de las variables deentorno.
$HTTP_SERVER_VARS$_SERVER
Array asociativo ( o en terminología Perl HASH )de pares [Clave,Valor] de valores definidos porel servidor web.
Array asociativo ( o en terminología Perl HASH )de pares [Clave,Valor] de los valores asociados ala sesión.
Existe por otra parte una serie de variables que se pasan a PHP a través delservidor y que resultan muy útiles y a la vez son muy importantes::
Variable Contenido$SERVER_NAME
$_SERVER['SERVER_NAME']Nombre del servidor que estaproporcionando el servicio.
$SERVER_SOFTWARE$_SERVER['SERVER_SOFTWARE'
]
Identificador del software servidorproporcionado en las cabeceras derespuesta.
$DOCUMENT_ROOT$_SERVER['DOCUMENT_ROOT']
Directorio raíz de los documentos delservidor.
$REMOTE_ADDR$_SERVER['REMOTE_ADDR']
Dirección remota (cliente) desde laque se produce la petición.
1.5 Tipos de datos
PHP soporta dos tipos diferentes de datos:
• Simples: son los más sencillos y conocidos → enteros, reales, cadenasde caracteres, etc.
• Complejos: soportan estructuras de información más complejas,registros, clases, arrays de arrays, hashes, etc. …
1.5.1Simples
Los diferentes tipos de datos que soporta PHP son:
1. Integer: Números enteros.
2. Double: Números en coma flotante.3. String: Cadenas de caracteres.4. Boolean: Valor lógico →Valores TRUE | FALSE.5. Array: Tipo especial de colección de valores.6. Object: Tipo especial de dato complejo.
Nota: El tipo de datos boolean no está definido en la sintaxis del lenguajePHP en la versión 4.x de forma explícita, pero funciona correctamentecuando asignamos el tipo de constantes que se han definido anteriormente.Además se puede obtener el tipo de dato con gettype() o bien cambiarlocon settype(), y en esta última función si que esta definido este tipo de
Este tipo de variables permite almacenar valores de tipo entero
habitualmente aunque dependiendo de la plataforma el espacio ocupadosuele ser de 32 bits, lo que implica que el valor máximo será del orden de 2mil millones (en ambos sentidos: positivos y negativos).
Si queremos indicar variables de tipo entero pero en notación octal ohexadecimal simplemente tenemos que escribir un prefijo concreto:
• Hexadecimales: 0xnnnn – donde nnnn es un numero hexadecimalcorrecto.
• Octales: 0nnnn – donde nnnn es un numero octal correcto.
Un ejemplo de uso de este tipo de variable es el siguiente: [entero.php]
Una variable de este tipo es la que admite dos valores: True o False, yaestén escritos en minusculas o mayusculas. Ademas no sólo permiten laasignacion de estos valores sino del resultado de expresiones lógicas. Elvalor False esta asociado al valor numerico 0 y el True a un valor numericodistinto de 0.
una cadena unas comillas se utilizaran como separadores las comillas delotro tipo.
Es decir:
$MITexto = " 'hola'";$MiTexto = ' "hola" ';
pero estarian mal las siguientes:
$MITexto = " 'hola" ';$MiTexto = ' "hola' ";
L a diferencia estriba en que dentro de una cadena de caracteres limitadapor comillas dobles si utilizamos variables éstas son reemplazadas por suvalor (interpolación de variables), mientras que nada de esto ocurre en elcaso de las comillas simples.
Un ejemplo de esto es lo siguiente:
<html>
<head><title>
Ejemplo variables cadenas de caracteres</title>
<head><body>
<br><br><center>
<font face="tahoma"><?php
$Cadena = "Hoy quiero estar flex";$Edad = 150;
echo '$Cadena y $Edad';echo "<br>";echo "$Cadena y $Edad";
A su vez la utilizacion de comillas simples impide la utilizacion desecuencias como: \n, \t, etc …
1.5.6Tipos de datos Complejos
Ahora entramos en la definición de tipos de datos más complejos que losvistos hasta ahora. Esto implica una gestion más compleja pero a su vezmás rica.
Existen basicamente dos tipos de datos complejos en PHP: los arrays y lasclases, aunque éste último podria perfectamente englobar al primero.
1.5.7Arrays
Un array como en casi cualquier lenguaje se define como una estructuradonde la informacion que está dentro de la estructura comparte el mismonombre como referencia de la estructura de datos, facilitando así su uso.
Al igual que en el resto de los tipos de datos, la declaracion-definicion esimplicita y lo mejor para entender este tipo de datos es mediante un
ejemplo.
En este ejemplo utilizaremos un array para almacenar la ficha personal deuna persona y posteriormente la visualizaremos.
Entre los detalles importantes que posee PHP esta el hecho de que sideseamos añadir un elemento al final del array basta con omitir el subíndicey PHP se encarga de calcular uno que sea superior al máximo existente einsertar el valor en dicha posición:
$Ficha[]=”1 Agosto de 1973”
Otro detalle interesante son los arrays asociativos, este tipo de arrays muyutilizados en Perl permiten que la indexacion del array no sea en base a
indices numéricos sino precisamente a informacion que tambien deseamosalmacenar.
Para entender mejor este nuevo concepto realicemos otro ejemplo de arraysasociativos.
Estas funciones de gestion de tipos permiten realizar ciertas operacionesbasicas con los tipos de datos como:
Redefinir un tipo de dato. Mostrar el tipo de dato. Comprobar si una variable tiene asignado algun valor. Comprobar si es un tipo de dato particular. Conversion de tipos.
La lista de funciones de gestion de tipos de datos es:
Nombre Descripcion Ejemplo
gettype(...)
•
Obtiene el tipo dedato de la variable
gettype($Edad)
settype(..., Tipo) Cambia el tipo dedatos de la variableindicada por el nuevotipo. Los tipos dedatos destino puedenser: integer, boolean,array, object.
settype($Edad,’string’)
boolean is_array(...) Devuelve true si la
variable es un array.Falso en casocontrario.
is_Array($Edad)
boolean is_bool(...) Devuelve true si lavariable es unbooleano. Falso encaso contrario.
is_bool($Edad)
boolean is_int(...) Devuelve true si lavariable es entero.Falso en casocontrario.
is_int($Edad)
boolean is_long(...) Devuelve true si lavariable es un long.Falso en casocontrario.
is_long($Edad)
boolean is_integer(...) Devuelve true si lavariable es entero.Falso en casocontrario.
is_integer($Edad)
boolean is_numeric(...) Devuelve true si lavariable es unnumerica. Falso encaso contrario.
is_numeric($Edad)
boolean is_object(...) Devuelve true si lavariable es un objeto.Falso en casocontrario.
is_object($Edad)
boolean is_double(...) Devuelve true si lavariable es undouble. Falso en casocontrario.
is_double($Edad)
boolean is_real(...) Devuelve true si lavariable es un real.Falso en casocontrario.
is_real($Edad)
boolean is_float(...) Devuelve true si lavariable es un float.Falso en caso
Presentaremos a continuación y al igual que en otros lenguajes todos losoperadores que posee y las reglas de precedencia:
• Operadores Aritmeticos:
Operador
Descripcion Ejemplo
+ Suma de dos numeros 5+2- Resta de dos numeros 1-3* Multiplicacion de dos numeros 2*3/ Division de dos numeros 7/6% Módulo de dos numeros enteros 7 % 5
++ Incremento:
PreIncrementoPostIncremento
++$Sueldo
$Sueldo++-- Decremento:
PreDecrementoPostDecremento
--$Edad$Edad--
• Operadores de Asignacion: Esta es la tabla principal pero tambienentrarian los operadores a nivel de bit.
Operador
Descripcion Ejemplo
= Asignacion de un valor a una variable $Sueldo=7+= Equivale a $Variable=$Variable+Valor $Sueldo+=7-= Equivale a $Variable=$Variable-Valor $Sueldo-=5*= Equivale a $Variable=$Variable*Valor $Sueldo*=2/= Equivale a $Variable=$Variable/Valor $Sueldo/=3.= Equivale a $Variable=$Variable.Cadena $Nombre.=”Perez”
• Operadores de Comparacion:
Operador
Descripcion Ejemplo
== Cierto si son iguales. Falso si no lo son. $Edad1==$Fecha
=== Cierto si son iguales y son del mismotipo. Falso si no lo son.
$Edad1===$Edad2
!= Cierto si son distintos. Falso si no lo $Edad1!=$Fecha
‘ Ejecuta desde el SO el comando quehaya entre estas comillas
‘ls –al’
@ Control de errores: ubicado antes deuna instrucción si genera cualquiererror este es ignorado y se almacenaesta informacion en $php_error_msg( siempre y cuando este activada ladirectiva track_errors ) . Este operadores peligrosa ya que anula los mensajesde error por lo que una aplicación
podria detenerse sin saber nosotros aque se ha debido.
$Asesino = @TRUU
• Precendencia de operadores
Tabla de precedenciaor xor and
= += -= *= /= .= %= &= ^= ~= <<= >>=?:||
&&|^&
== != === !==< <= > >=
+ - ./ * %
! ~ ++ - (cast)
De esta forma tenemos ya definidos el conjunto de operadores y las reglas
de precedencia de operadores como en todos los lenguajes.
1.8 Estructuras de control
Como en todos los lenguajes existen una serie de estructuras de controlflujo de un programa, procederemos por tanto a definir todas y cada una delas estructuras de control.
1.8.1“If” vs “?:”
Esta es la estructura clasica de control de flujo.
Sintaxis simple ( Una sola instrucción dentro del bloque de instrucciones ).
Con sintaxis simple queremos denotar que no es necesario explicitar lossimbolos de apertura y cierre de llaves tipicos que engloban un bloque deinstrucciones.
if (condicion) Instrucción;
else Instrucción; ← Opcional
Ejemplo
<html><head>
<title>Ejemplo de sintaxis simple
</title></head><body>
<?php$Edad = 29;if ( $Edad == 29 )
echo “<center><br>Hay el arroz!</center>?>
</body></html>
Sintaxis compleja ( Mas de una instrucción dentro del bloque deinstrucciones ).
if (condicion) {Instrucción-1;...
Instrucción-N;} else { ← Opcional al igual que antes
Ahora viene otra variante del for ( solo a partir de la version 4 de PHP ) quepermite el recorrido de elementos complejos (por ejemplo arrays) de unaforma sencilla.
Sintaxis
foreach ( NombreElemento as NombreVariable ) {Instrucción-1;..
$Ciudad[0]=”Vitoria-Gasteiz”;$Ciudad[1]=”Bilbao”;$Ciudad[2]=”San Sebastian”;foreach ( $Ciudad as $Nombre )
echo “<br> Mi ciudad es $Nombre”;}
?>
</center></body>
</html>
Existen tambien otro tipo de arrays ya especificados anteriormenteexplicados llamados arrays asociativos cuyo recorrido se agiliza mucho siutilizamos este tipo de estructura de control.
Estas dos sentencias son tipicas de lenguajes como: C, C++ y Java.
La sentencia break permite salir de la ejecucion de un bucle en el que seencuentre sumergido. Mientras que continue permite saltarse la iteracionactual pero no salir del bucle.
Estas sentencias se incluyen normalmente dentro de instrucciones quepermiten crear iteraciones como: for, while, do while, etc …
Lo mejor para ilustrar estos conceptos es el siguiente ejemplo:
<html><head>
<title>Ejemplo de while
</title></head><body>
<center>Tabla de multiplicar del 10 con continue<br><?php
Esta es otra instrucción clasica de control de flujo como el if pero de formaque podemos tener multiples tareas a diferentes condiciones de entrada,siempre escalares.La sintaxis de esta instrucción seria la siguiente:
switch (expresion){
case Resultado1: Instrucción-11;...Instrucción-1N;Break;
case Resultado2: Instrucción-21;...Instrucción-2N;Break;
.
.
.case ResultadoM: Instrucción-M1;
.
.
.Instrucción-MN;Break;
default: Instrucción-Z1;...Instrucción-ZN;
}
Un ejemplo para ilustrar esta estructura de control es el siguiente:
<center>Tabla de multiplicar del 10 con continue<br><?php
$Edad=18;switch($Edad){
case 18: echo “<br>Pipiolo<br>”;break;
case 19: echo “<br>Pipiolon<br>”;break;
case 20: echo “<br>Jovin<br>”;break;
case 28: echo “<br>Joven<br>”;break;
default: echo “<br>Unknown<br>”;}
?></center>
</body></html>
1.9 Funciones
Ahora pasaremos a explicar las funciones que nos permitiran agrupar tareasrepetitivas de forma que no tengamos que repetir el mismo codigo enmuchas aplicaciones PHP.
1.9.1Definicion
Para definir una funcion hay que seguir una sintaxis concreta:
function nombre ( [&] $param1[=Val1],.., [&] $paramN[=ValN]){
Podemos definir las partes que aparecen en la declaracion de una funcioncomo:
• Nombre_funcion: Aquí escribiriamos el nombre de la funcion
• $param1, … ,$paramN : Aquí escribiriamos los nombres de losparametros de la funcion, puede contener valores por defecto medianteuna asignacion a un valor.
• Codigo_PHP: Aquí vendria todo el codigo de la funcion que queremosindicar.
• Return valor: Indicariamos el codigo de devolucion de la funcion,tradicionalmente este codigo nos indica el estado de ejecucion, si ha idobien o ha ido mal.
No existe ninguna limitacion en cuanto a la ubicación de las funciones peroexiste una seria de recomendaciones que son seguidas por losprogramadores de PHP sobre el orden en el que deben aparacere cada unade las partes de una aplicación :
• Declaracion de constantes y variables globales.• Declaracion y codificacion de funciones de usuario.• Codigo del programa principal que genera la nueva página.
1.9.2Ejecucion
Para ejecutar una funcion en principio solo existe una restriccion debe estardentro de una expresion escribiendo el nombre y los valores de losparametro que le correspondan entre parentesis.
1.9.3Paso de parametros
El paso de parametros en PHP puede ser de dos tipos:• Por valor: por defecto esta es la situacion habitual.
• Por referencia: para indicar que un parametro es por referencia se debeindicar el simbolo “&” delante del parametro en la declaracion de lafuncion.
Otro aspecto importante es el uso de valores por defecto, el valor pordefecto debe ser siempre una constante y no una variable, ademas losparametros que tienen asignados valores por defecto siempre tiene queaparecer en las ultimas posiciones de la lista de argumentos de la funcion.
1.10Funciones especificas: cadenas de caracteres,fechas, arrays.
Ahora procederemos a explicar algunas de las muchas funcionespredefinidas que existen en PHP asociadas a cierto tipo de tareas muycotidianas como son:
• La gestion de fechas.
• La gestion de cadenas de caracteres.
• La gestion de arrays: simples y complejos.
1.10.1 Fechas
Para la gestion de fechas disponemos un conjunto de funciones que sepuede agrupar en cuatro categorias muy sencillas:
1. Obtencion de fecha-hora2. Formateo de la fecha-hora3. Establecimiento de la fecha-hora4. Validacion de la fecha-horaDescribiremos las funciones de cada categoria y finalemente realizaremosun ejemplo que trate de utilizar todas las funciones expuestas.
Obtencion de la fecha-horaDisponemos de las funciones:
Funcion Descripciontime() Devuelve un numero entero que representa la marca de
tiempo correspondiente al instante que se ejecuta.microtime En algunos casos nos puede interesar tener una precision
mayor, por lo que esta funcion nos permite obtener lamisma marca pero con una precision de microsegúndos.Siempre que el sistema soporte la funcion:gettimeofday().
getdate() Obtiene un array asociativo con la informacion de fecha yhora del sistema, la descripcion de este array asociativoes:
Clave Contenidoseconds Numero de de segúndos de la hora actual.minutes Numero de minutos de la hora actual.hours Numero de horas de la hora actual.mday Dia del mes.wday Dia de la semana en valor numerico. Es un valor
entre 0 y 6. Teniendo en cuenta que el cero esmon Mes del año en valor numerico.
yday Año en valor numerico.weekday Cadena de caracteres que contiene el dia de la
month Cadena de caracteres que contiene el mes delaño tambien escrito en ingles.
0 Marca de tiempo obtenida por la funciongetdate().
gettimeofday() Obtiene un array tambien asociativo con la informacion defecha y hora.
Clave Contenidosec Numero de segúndos transcurridos desde
el inicio de UNIXusec Numero de microsegúndos de la hora
minuteswest Numero de segúndos al oeste dedstime Tipo de correccion.
localtime() Es una funcion que recibe como parametros: un valorentero que representa una fecha y un valor booleano quenos indica en que formato queremos obtener lainformacion: indexada o asociativa.Su sintaxis:
localtime(int tiempo[,bool tipo_de_matriz]);
La siguiente tabla muestra los valores de los indices juntocon las claves el tipo de informacion que devuelven:
Indice Clave Contenido
0 tm_sec Numero de segúndos de la fecha1 tm_min Numero de minutos de la fecha2 tm_hour Numero de horas de la fecha indicada.3 tm_mday Dia correspondiente del mes.4 tm_wday Dia de la semana en valor numerico. El
valor esta entre 0 y 6 teniendo encuenta que el 0 es domingo.
5 tm_mon
6 tm_year
7 tm_yday
8 tn_isdst
Formateo de la fecha-horaUna vez que sabemos que funciones tenemos para obtener la fecha y lahora actuales el siguiente problema consiste en como visualizar estos datos.Para esta tarea disponemos a su vez de un conjunto de funciones.
Podemos distinguir dentro de este conjunto de funciones dos subconjuntosdiferentes, tomando como criterio el idioma:
• Sin selección: Ingles• Con selección ( en nuestro caso ): Español.
Para las funciones del primer tipo disponemos de la funcion:
cuya definicion del formato dispone del siguiente conjunto de opciones:
Opcion Descripciona Hace que la hora aparezca la cadena “a.m.” o “p.m.”A Hace que la hora aparezca la cadena “A.M.” p “P.M.”d Dia del mes con dos digitos. Los dias del 1 al 9 los imprime
con cero a la izquierda; es decir, de “01” a “31”.D Dia de la semana como una cadena de caracteres; por
ejemplo, “March”. La cadena se corresponde con elnombre en ingles.
F Nombre del mes completo como una cadena decaracteres; por ejemplo, “March”. La cadena secorresponde con el nombre en ingles.
h Hace que la hora aparezca en formato “01” a “12”.H Hace que la hora aparezca en formato “00” a “23”.g Hace que la hora aparezca en formato “1” a “12”.G Hace que la hora aparezca en formato “0” a “23”.i Hace que los minutos aparezcan en formato “00” a “59”.j Hace que el dia aparezca en formato “1” a “31”.l
(L minuscula)Dia de la semana completo; por ejemplo, “Monday”. Lacadena se corresponde con el nombre en ingles.
L Escribe un “0” o un “1”, en funcion de si el año es bisiestoo no. 0 Indica que no es bisiesto y 1 que si lo es.
m Hace que el mes aparezca en formato “01” a “12”.n Hace que el mes aparezca en formato “1” a “12”.M Mes como una cadena de tres letras; por ejemplo, “Mar”.
La cadena se corresponde con el nombre en ingles.s Hace que los segúndos aparezcan en formato “00” a “59”.S Cadena de dos caracteres con el sufijo ordinal en ingles;
por ejempo, “th”, “nd”.t Numero de dias del mes especificado; de “28” a “31”.U Numero de segúndos desde el comienzo de UNIXw Numero del dia de la semana, teniendo en cuenta que el
“0” es domingo y que el “6” es sabado.Y Año con cuatro cifras; por ejemplo, “2002”.y Año con dos cifras; por ejemplo “02”.
z Dia del año; de “0” a “365”. El primer dia del año es el 0.Z Obtiene la diferencia horaria en segúndos ( de “-43200” a“43200” ) con respecto a la hora GMT ( 12h * 60min *60seg ).
El resto de caracteres que deseemos poner seran escritos como tal salvoque coincidan con las opciones de esta funcion en cuyo caso deberemosponer el simbolo “\” delante del carácter en cuestion.
echo date(“\Ho\y e\s D, d \d e F \d e Y”);
Para las funciones del segúndo tipo disponemos de la funcion strftime(),que utiliza la configuración local de la maquina a traves de la funcion
setlocale() donde se ejecuta el script para devolver una cadena con elformato definido. Las opciones que dispone esta funcion son:
Opcion Descripcion%a Nombre del dia de la semana abreviado en el idioma
seleccionado.%A Nombre del dia de la semana completo en el idioma
seleccionado.%b Nombre del mes abreviado.%B Nombre del mes completo.%c Representacion de fecha y hora referidas en el idioma
actual.%d Dia del mes en formato 01 a 31.%H Hora como un numero de 00 a 31.
%I Hora como un numero de 01 a 12.%j Dia del año como un numero de 001 a 366%m Mes como un numero de 01 a 12.%M Minuto en numero.%p “a.m.” o “p.m.” según la hora dada, o las cadenas
correspondientes en el idioma actual.%S Segúndos en numero.%U Numero de la semana en el año, empezando con el primer
domingo como el primer dia de la semana.%W Numero de la semana en el año, empezando con el primer
domingo como el primer dia de la semana.%w Numero de la semana en el año, empezando con el primer
lunes como el primer dia de la primera semana.%x Representacion por defecto de la fecha sin la hora.%X Representacion por defecto de la hora sin la fecha.%y Año en numero de 00 a 99.%Y Año en numero de cuatro cifras.%Z Nombre o abreviatura de la zona horaria.%% Carácter “%”.
Establecimiento de la fecha-horaEl siguiente conjunto de funciones estan relacionadas con el establecimiento
de una fecha y una hora concreta. Es decir estas funciones permiten crearuna variable de tipo fecha y hora, que despues podremos visualizar.
Las funciones relacionadas son:• mktime()
• gmktime()
La sintaxis es la misma para las dos:
int mktime(int hora, int minutos, int segúndos, int mes,int dia,int anio[,int ajuste]);
Se pueden omitir los valores de los parametros pero de derecha a izquierda.Los parametros descritos se explican por si mismos excepto el de ajuste,que indica si se debe realizar una correccion debida al ahorrro de consumo
que se establecen en algunos paises. Si el ajuste vale 1 se corresponde conel horario de verano y 0 con el de invierno.
La funcion gmktime() funciona de la misma forma pero considerando quelos parametros estan asociados con la hora GMT.
Validacion de la fechasEste conjunto de funciones es especialmente util de cara a la validacion defechas que se nos pueden proporcionar por diferentes medios.
Las funciones que nos permiten realizar esta tarea son:•
checkdate()• strtotime()
La sintaxis de la primera funcion es:
int checkdate(int mes,int dia,int anio);
Los rangos de los parametros son:• mes : Entre 1 y 12.
• dia : Depende del mes.• anio : Entre 0 y 32767.
La sintaxis de la siguiente funcion es:
int strtotime(string cadena_fecha[, int ahora]);
Esta funcion a diferencia de la anterior devuelve una marca de tiempo apartir de la fecha especificada en la cadena de caracteres.
Posee una desventaja:• No permite realizar conversiones con fechas anteriores a la creacion de
UNIX
Posee una ventaja:• Permite realizar aritmetica de fechas.
En cuanto a los paremetros:• Cadena_fecha: se le debe especificar una cadena en formato ingles:
“mm/dd/aa” o bien “dd mes aaaa”, por ejemplo “14 march 1992”.
• ahora: es la fecha base que se le puede indicar como base en lasoperaciones aritmeticas.
Funciones complementariasEn este apartado explicaremos brevemente la funcion setlocale() que nospermite establecer el idioma en el que apareceran las fechas que hacen usode esta funcion.
La sintaxis de esta funcion es la siguiente:
string setlocale(string categoria,string pais)
La explicacion de los parametros es la siguiente:• categoria: es una cadena de caracteres que especifica las funciones
afectadas por la conversion. Los valores posibles son:• LC_TYPE : Conversion de cadenas a la configuraciónoriginal.• LC_NUMERIC : Para los separadores numericos.• LC_TIME : Para la aplicación en los formatos de fechas yhora con strtime.• LC_ALL : Aplica todas las anteriores.
• pais: se indicara el pais, si no se indica nada es decir “” una cadenavacia tomara el valor de las variables de entorno.
Realizaremos ahora un ejemplo que trate de utilizar algunas de lasfunciones anteriormente explicadas:
<html>
<head><Title>Ejemplo de uso de funciones de gestion de fechas/hora</Title>
</Head><Body><br><?phpecho "time=La fecha actual es:";$hora=time();echo $hora;echo "<br>\ngetdate=La fecha actual es:";
$matriz=getdate();echo "<TABLE>\n";foreach($matriz as $Campo => $Valor )
}echo "</TABLE>\n";echo "<br>\ndate=La fecha actual es:";echo date("D t Y H:i A ");$Fecha=mktime(10,30,0,4,1,2003);echo strftime("<br>\nmktime=La fecha actual es:%A %d %B
%Y",$Fecha);echo "<br>\ncheckdate=33 Febrero 2003 es";if ( true===checkdate(2,33,2003) ) {
echo "<br>\nVALIDA<br>";} else {
echo "<br>\nINVALIDA<br>";}?>
</body></html>
1.10.2 Cadenas de caracteres
Esta es una de las partes mas potentes de PHP que es la gestion de cadenasde caracteres.
Esta gestion la podemos dividir en varios grupos como se puede ver en lasiguiente figura:
Como se puede observar existen multitud de funciones de gestion decadenas de caracteres. En el ultimo caso: las funciones de soporte HTMLestudiaremos algunas de las funciones mas interesantes de cara a la
generación o interpretacion de páginas HTML.
Tambien se puede observar en este grafico es que el numero de funcionesasociadas al tratamiento de cadenas es bastante elevado, y es normal yaque PHP se caracteriza entre otras cosas por su capacidad de gestion decadenas de caracteres y las expresiones regulares que aglizan este trabajo.
Por tanto lo que se va realizar ahora y al igual que en el caso de la gestionde fechas y horas, es la descripcion de las funciones asociadas a cadagrupo de gestion de cadenas y posteriormente se tratara de realizar unejemplo que intente reunir la mayor cantidad de estas funciones para ver su
aplicación.Escritura de cadenasExisten varias maneras de escritura de cadenas de caracteres que lamayoria estan expuestas anteriormente pero las volveremos a citarañadiendo alguna novedad:
1. Escritura de cadenas con: “ “
Sintaxis:
“ secuencia de caracteres “
Ejemplo:
$Mensaje=“Hola Mundo 2003 segúnda invasion de IRAQ”
1. Escritura de cadenas con: ‘ ‘
‘Secuencia de caracteres’
Ejemplo:
$Mensaje= ‘Hola Mundo 2003 segúnda invasion de IRAQ’
2. Escritura de cadenas con: <<<
<<<IdentificadorLinea de caracteres-1Linea de caracteres-2
Funciones de gestion de caracteresExiste en PHP un conjunto de funciones de gestion de caracterestradicionales en otros lenguajes:•
1. string chr(int valor) : Esta funcion devuelve como dato el carácter dela tabla de codigos ASCII especificado en su parametro de entrada.
2. int ord(string cadena) : Esta funcion devuelve como dato el numeroentero que se corresponde con el codigo ASCII del primer carácter de lacadena que recibe como parametro.
Visualizacion de cadenas de caracteresla visualizacion de cadenas podemos realizarla con o sin formato especificoa traves de las siguientes funciones:
• echo(): esta funcion tiene los siguientes formatos.
o echo string arg1 [, string argn];
o echo (string arg1 [, string argn]);El contenido a mostrar mediante esta funcion puede ser:
• printf() : esta es una de las funciones que permite visualizar en unformato especifico.
printf(string formato [,valor1 , …]);
Donde formato es una cadena que expresa la forma en que seranvisualizados y que es como sigue:
printf("Mi peso es %'*20.1f y mi edad es %'*-20d",86.2,29);
Analicemos ahora que significan cada uno de los elementos de esteejemplo de visualización.
% → Indicador de comienzo de especificacion de conversion.‘ * →Caractere de relleno * que debe ser precedido del simbolo ‘ sino esel espacio
en blanco.20 →Numero minimo caracteres que se deben mostrar.
.1 →Numero de decimales que se deben mostrar.f →Tipo de datos a visualizar en este caso numero de tipo double.
printf("Mi peso es %'*20.1f y mi edad es %'*-20d ",86.2,29);
% → Indicador de comienzo de especificacion de conversion.‘ * →Caractere de relleno * que debe ser precedido del simbolo ‘ sino esel espacio
en blanco.- →Alineacion a la izquierda por defecto es a la derecha.20 →Numero minimo caracteres que se deben mostrar.d →Tipo de dato a visualizar en este caso es un numero entero.
Existen otros tipos de datos a visualizar:
Simbolo
Descripción
% Representa el simbolo de porcentaje.
b El dato se trata como un numero entero pero se visualiza comoun numero binario.c El dato se trata como un numero entero pero se visualiza como
d El dato se trata como un numero entero y se visualiza como unnumero decimal sin parte fraccionaria.
f El dato se trata como un numero real de tipo double y se
visualiza como un numero real.o El dato se trata como un numero entero y se visualiza como un
numero en octal.s El dato se trata y se visualiza como una cadena de caracteres.x El dato se trata como un numero entero pero se visualiza como
un numero hexadecimal en minusculas.X El dato se trata como un numero entero pero se visualiza como
un numero hexadecimal en mayusculas.
• sprintf(): esta funcion es muy parecida a la anterior solo se diferenciaen que el resultado de la impresión se almacena en una variable.
• sscanf(): esta funcion es justo la contraria a la funcion anterior, esdecir permite leer datos en los formatos ya explicados anteriormentepero desde una variable.
Un ejemplo aclarador de esta funcion es la siguiente:
Alteracion del contenidoUna vez que sabemos como visualizar las cadenas de caracteres veremosalgunas de las funciones mas socorridas para modificar el contenido de unacadena.
Las funciones de alteración del contenido estan orientadas a fácilitarnos eltrabajo con cadenas eliminando por ejemplo todos aquellos problemas quesurgen cuando tenemos fines de linea, espacios en blanco u otroscaracteres especiales en las cadenas de caracteres.
Veremos solo algunas de las funciones ya que existen mas de 80 funciones
Un grupo de funciones que son muy utilizadas son:
• Eliminacion de espacios en blanco y fines de linea.
o chop : Elimina los espacios sobrantes al final de la cadena,incluyendo los salto de linea.
•
o ltrim : Elimina los espacios en blanco al principio de la linea.Los caracteres que elimina son: "\n", "\r", "\t", "\v", "\0", y el
propio espacio.•
o rtrim : Elimina los espacios en blanco y los fines de linea, escomo un alias de chop.
o trim :Elimina los espacios al principio y al final de una linea, escomo una combinacion de ltrim y rtrim.
• Division de una cadena de caracteres en trozos.
o split : Divide una cadena por una expresion regular elresultado es un array de cadenas, al igual que explode y comoopcion podemos indicar el limite maximo de cadenas aobtener.
Se recomienda explode si es posible realizarlo con una cadenaya que el uso de split implica el arranque del motor deexpresiones regulares.
o explode : Divide una cadena por otra cadena, el resultado esun array asociativo donde en cada posicion tenemos cada unode los trozos. Como opcion se puede indicar el limite maximode cadenas a obtener.
• Conversion a minusculas y a mayusculas. [ EL nombre pareceheredado de las clasicas funciones del Lenguaje “C” ].
o strtolower : Convierte a minusculas una cadena decaracteres.
o strtoupper : Convierte a mayusculas una cadena decaracteres.
• Sustitucion de subcadenas en cadenas de caracteres.
o substr_replace (Esta funcion fue incluida en PHP 4.0) :permite sustituir una cadena por otra cadena, donde serequiere indciar en la cadena modificada la posicion a partir dela cual se quiere sustituir (opcionalmente se podra indicar lalongitud de la cadena ), si la posicion inicial es positivaempieza desde el comienzo de la cadena y si es negativaempieza desde el final.
o str_replace : Permite sustituir dentro de una cadena todas lasapariciones de una cadena dada por otra cadena especificada.
o substr :
Acceso del contenido
• Busquedas de cadenas
o strstr : Encuentra la primera aparición de una cadena. Estafuncion es muy interesante por ejemplo para extraer eldominio de una dirección de correo como se ilustra en el
o substr: Devuelve una parte de la cadena especificada.
o Como se ha comentado existen multitud de funciones de estetipo por lo que es mas razonable consultarlas on-line enInternet.
Tambien debemos resaltar que la ayuda on-line de php sobre funciones esrealmente excelente, ya que proporciona la descripcion, la sintaxis, unejemplo y observaciones de desarrolladores externos de las funciones dePHP.
La direccion del manual en castellano es:
http://www.php.net/manual/es/
Soporte de HTML
Para el soporte de HTML PHP dispone de un conjunto de herramientas quenos permiten realizar el trabajo con las páginas web de una manera massencilla.
• addcslashes: Permite generar la cadena de caracteres “escapada”es decir con el caracter “\” delante de cada caracter.
• get_meta_tags : Devuelve una matriz con todas las lineas que
contienen las etiquetas META.
• nl2br : Convierte todos los saltos de lineas encontrados en la cadenapor la cadena <BR>.
• parse_url : Devuelve una matriz asociativa de los componentes deuna url.
• urlencode : En algunas ocasiones la informacion viene codificadasiguiendo las reglas de codificacion url y mediante esta funcionpodemos decodificar el contenido.
• urldecode : Permite realiza el proceso contrario.
Como es de suponer existen multitud de funciones que no se especifican eneste documento ya que la mejor informacion esta a disposicion on-line.
1.10.3 Arrays
Existen en PHP un gran cantidad de funciones asociadas al tratamiento dearrays para fácilitar el manejo de las mismas, alrededor de 60 funciones,por lo que no se considera muy practico explicar todas y cada una de ellas,solamente detallaremos algunas de las mas utilizadas, y clasificaremos lasfunciones de arrays.
Las funciones las clasificaremos en:
• Creacion de Arrays Implicitos : en lugar de explicitar la sintaxis
considereramos la realizacion de ejemplos donde se vea de unamanera práctica como se realiza:
o Undimensionales:
// Declaracion implicita de matriz indexada$Nombres[0]=’Jose Luis’;$Nombres[3]=’Patxi’ ;
// Declaracion implicita de matriz asociativa$Alumno[“Nombre”]=’Kepa’;
o array_pad: Funcion que nos permite ampliar una matriz yrellenarla con un valor concreto.
o array_splice: Funcion que nos permite sustituir un trozo dearray y rellenarlo por otros elementos indicados en otro array,tambien puede simplemente eliminar elementos de un array.
o array_keys: Si se especifica el elemento se devuelve la clavey el elemento buscado del array.
o array_values: Devuelve todos los valores de un array.
o array_walk: Funcion que nos permite aplicar a todos los
elementos de un array una funcion dada.
o array_slice: Funcion que nos permite extraer un trozo dearray.
• Funciones de Ordenacion : Este conjunto de funciones nospermiten realizar diversas tareas de ordenacion con criteriosdiferentes.
o sort: Funcion que nos permite ordenar un array.
o rsort: Funcion que nos permite ordenar un array de formainversa.
o asort: Funcion que nos permite ordenar un array manteniendola asociacion de indices.
o arsort : Funcion que nos permite ordenar un array de formainversa manteniendo la asociacion de indices.
o ksort : Funcion que ordena un array por clave.
o krsort : Funcion que ordena un array por clave de forma
inversa.o usort: Funcion que ordena un array por valores mediante una
funcion proporcionada por el usuario.
o uasort: Funcion que ordena un array mediante una función decomparación proporcionada por el usuario y mantiene laasociación de índices.
o uksort: Funcion que ordena un array por claves mediante unafuncion proporcionada por el usuario.
o array_multisort : Funcion que ordena arrays multiples o bienarrays multidimensionales.
El protocolo por excelencia mas utilizado en internet es el http, o tambienprotocolo de transferencia de hipertextos.
Este protocolo esta en el nivel de aplicación del modelo TCP/IP u OSI, y sebasa en el envio de mensajes entre dos nodos. El modelo que sigue esteprotocolo es el conocido como Cliente/Servidor, esto quiere decir quepodemos disponer de varios clientes solicitando informacion a un servidor.
El funcionamiento consistiria en lo siguiente:
1.11Codificacion de los URLs
Debido a que internet es un medio internacional fue necesario definir en undocumento RFC1738 la estructura y el contenido de los URLs.
Esta especificacion de URLs sigue una serie de normas y entre ellas unarelativa a los caracteres especiales:
• Los caracteres especiales son reemplazados por una tripleta formadapor el carácter % seguido dos digitos en hexadecimal que indican elvalor del carácter.
•
Se determina que un carácter es especial si esta dentro de alguno delos siguientes grupos:
o Aquellos que no tienen una representacion grafica en US-ASCII.o Grupo de caracteres: “ “, <, >, “, #, %,{, ...
Cuando el usuario escribe una URL el navegador despierta al motor decomunicaciones indicandole que desea recibir una cierta página de un ciertoservidor.
Pero el protocolo no solo puede realizar peticiones de páginas sino que esun poco mas general y posee un conjunto de metodos que realizan tareasmuy diversas:
Metodo DescripciónOPTIONS Información relacionada con las opciones de un recurso.GET Pide un objeto: imagen, fichero, ...HEAD Pide metainformación sobre un objeto.POST Envia datos para ser procesados por un objeto [recurso].PUT Envia un objeto para ser almacenado en el servidor.
DELETE Pide la eliminación de un objeto en el servidor. TRACE Genera información de debug sobre la comunicación.CONNEC
TMetodo de comunicación a traves de Proxys
Los metodos mas empleados son GET, HEAD, POST.
1.14Campos de las cabeceras http
Los campos generales de las cabeceras http son los siguientes:
Campo DescripcionCache-Control Indicaciones del control de la cache.Connection Peticion de estado de conexion.Date Fecha y hora.
Pragma Opciones del comportamiento del protocolo. Trailer Informacion de avance de mensajes. Transfer-
Enconding
Codificacion del cuerpo de mensaje.
Upgrade Habilitacion de la especificacion por parte del cliente delprotocolo a soportar.
Via Informacion tecnica para gateways y proxys.Warning Informacion extra del estado del mensaje.Accept Lista de los tipos que el cliente es capaz de manejar.Accept-Charset Juegos de caracteres acpetables para la respuesta.Accept-Enconding Codfiicaciones soportadas.Accept-Language Preferencias del lenguaje.Authorization Datos para la autenticacion.Expect Estado del servidor esperado por el cleinte.
From e-mail del usuario.Host Nombre y puerto del servidor.If-Match Mascara para peticiones condicionales.If-Modified-Since Fecha para peticiones condicionales.If-None-Match Mascara para peticiones condicionales.If-Range Mascara para peticiones condicionales parciales.If-Unmodified-Since
Fecha para peticiones condicionales.
Max-Forwards Limite de saltos con el metodo TRACEProxy-Authorization
Datos para la autenticacion mediante Proxy
Range Rango de bytes.
Referer Identificacion interna URI del objeto enviado. TE Extensiones de la codificacion de la transferenciaUser-Agent Navegador del cliente.
1.15Mensajes de Respuesta
Los mensajes que generan los servidores como respuesta estan formadospor una cabecera y opcionalmente por un cuerpo.
Ademas la cabecera contiene una primera linea llamada linea de estado
seguida de una serie de campos.La estructura de una linea de estado es:
Ahora pasaremos a describir los diferentes tipos de codigos de estado quepodemos recibir:
Codigo
Finalidad Estado
1XX Información Recibida y se continua el proceso.2XX Éxito Recibida, comprendida y aceptada.3XX Redirección Requerimiento de accion posterior.4XX Error en el
clienteSintaxis incorrecta o imposibilidad de atención.
5XX Error en elservidor
El servidor no inhabilitado.
Disponemos en PHP de una funcion que nos permite incluir campos en las
cabeceras como por ejemplo incluir una linea de estado falsa como en elsiguiente ejemplo:
.
.
.<?php
header(‘http/1.1 404 Not Found’);?>...
1.15.1 Campos de los mensajes de respuesta
Como ya se ha comentado anteriormente los mensajes contienen una seriede cabeceras y estas se pueden clasificar de una manera mas general de lasiguiente forma:
Las cabeceras especificas de las solicitudes contienen los siguientescampos:
Campo DescricpiónAccept-Ranges Indica el tipo de rango de la informacion transmitida.Age Estimación en segúndos desde que se genero la
respuesta original.ETag Entidad para la identificacion del recurso.Location URI absoluto de un recurso.
Proxy-Athenticate Autenticacion ante servidores Proxy.Retry-After Tiempo para reintentar la obtencion de un recurso.Server Identificacion del software.
1.1 Procedimiento de envío/recepción de formulariosen http.
Existen tres procedimientos entre los metodos anteriormente descritos quehabitualmente mas se utilizan para el envío de recursos y objetos:
• Método GET : es el que utilizan los navegadores para solicitar losobjetos que conforma una página.
• Método HEAD: es el que se utiliza normalmente para obtenerinformación acerca de un recurso.
• Método POST: es el método por excelencia para el envío deformularios que contienen mucha información.
1.15.2 Método GET
Como ya se ha citado en el punto anterior este el método que utilizan losnavegadores para solicitar un recurso.
Un ejemplo de solicitud podría ser el siguiente:
GET /index.html HTTP/1.0
Cuando el recurso solicitado requiere de ser procesado previamente por unintérprete ( en este caso: el intérprete de PHP ) lo obtenido es el resultadode procesar las instrucciones que están en la página, no el código en sí.
Este procedimiento utilizado sobre todo en el envío de formularios, donde seforman parejas de variable-valor, este conjunto de parejas se presentan enla URI a partir del carácter “?” , toda la cadena que viene a continuación conlos pares variable-valor, se le conoce como QUERY STRING , y ademas lainformación en dicha cadena respeta las reglas de codificación URL.
Si enviamos mas de una pareja variable-valor, estas se separan mediante elcarácter “&”. Y cuando llega al servidor estas parejas se almacenan en unarray asociativo llamado $HTTP_GET_VARS/$_GET.
Y muy importante si en el fichero de configuración php.ini tenemos ladirectiva:
Los mensajes utilizando este método son idénticos a los empleados por elmétodo GET, la diferencia estriba en el mensaje de respuesta. En el métodoHEAD, el servidor responde utilizando solamente la cabecera de larespuesta excluyendo el cuerpo.
Este método permite consultar información acerca de un recurso paraproceder a realizar una acción u otra.
1.15.4 Método POST
El método POST al igual que el método GET pero la diferencia estriba en queel formulario se envía en el cuerpo del mensaje HTTP y no en la cabecera.La primera de las consecuencias es que el QUERY STRING aparece vacío.
Si procedemos a analizar ahora la diferencia a la hora de recuperar lainformación de un formulario en el caso de que utilicemos la mismadirectiva que en el método GET no hay cambios, por el contrario sideseamos utilizar el array asociativo ahora no nos vale el anterior sino$HTTP_POST_VARS/$_POST, pero el mecanismo de acceso es el mismo.
1.15.5 ¿Cómo subir ficheros?El procedimiento recomendado es utilizar el metodo POST ya que no tiene lalimitacion del tamaño de la cabecera de 8192 bytes.
Las diferencias entre los método GET y POST estriban en los siguientesaspectos:
• El tamaño de los datos a enviar mediante el método GET estalimitado al tamaño de la cabecera máximo.
• El registro que queda en el servidor mediante el método POST esnulo, pero con el método GET se pueden recuperar los formularioscon los datos originales.
En la siguiente figura podemos ver de una forma más gráfica las diferenciasexistentes que se han citado:
Si recordamos como hemos configurado, compilado e instalado PHPpodemos ver que PHP dispone de funciones para conexión de bases dedatos de muy variados tipos y desde puntos de vista genericos oespecializados.
Existen basicamente dos tipos de conexiones a bases de datos: lasconexiones normales y las conexiones persistentes.
1.17.1 Conexiones normales
Las conexiones normales emplean un mecanismo de conexión al comienzodel script y emplean otro mecanismo para finalizar la conexión al finalizar elscript. Es decir cuando se habla de conexiones normales se esta hablandode un ratio 1 conexión/1 página.
Las conexiones persistentes emplean un mecanismo de conexión en unscript y emplean otro mecanismo para finalizar la conexión en otro scriptdiferente. Es decir la conexión queda abierta por una página y cerrada porotra página.
Las ventajas de este tipo de conexiones son:
• Son páginas mas rapidas.• Menor coste de conexión, ya que solo se realiza una vez.• Aprovecha el coste del numero de licencias.
• Si una página bloquea una tabla el debe ser desbloqueada porquesino el resto de las páginas quedan bloqueadas hasta que se reiniciael servidor.
• Pueden existir limites de conexiones persistentes admitidas por elservidor de bases de datos, lo que implica que algunas páginaspodrian no poderse conectar.
En la siguiente figura podemos ver los dos modelos de conexiones que seutilizan:
1.18Conexión a una base de datos mySQL
PHP dispone de un conjunto bastante amplio de funciones para tratar conbases de datos mySQL:
1.18.3 Obtención de metainformación de la base de datos:El diccionario de datos
Una vez que ya sabemos como conectarnos y como desconectarnos de unabase de datos mySQL, nos puede interesar saber no solo la informacion queesta almacenada en ella sino quizas y en combinacion de ella informacion
relativa sobre el numero de bases de datos que existen en el servidor, lastablas de una base de datos indicada, el nombre de una tabla, ...Para poder obtener informacion de este tipo nos ayudaremos de lassiguientes funciones que existen en el módulo mySQL de PHP:
Informatika saila 80
Password
Usuario
Má uina
Recomendación para liberarlos recursos decada consulta.
(conexión)Devuelve como resultado los nombresde las bases de datos disponibles en elservidor al que nos conectamos.
mysql_list_tables (base_datos, conexión)
Devuelve como resultado los nombresde las tablas disponibles, en la base dedatos que indicamos.
mysql_tablename (resultado, numero_fila )
Devuelve el nombre de la tabla que seindica en resultado despues deejecutar: una de las dos funcionesanteriores.
mysql_field_name (resultado,numero_columna)
Devuelve como resultado el nombre delcampo que se indica, proporcionando latabla y el numero de columna.
mysql_field_type(resultado,numero_col) Devuelve como resultado el tipo delcampo que se indica, proporcionando latabla y el numero de columna.
mysql_field_len(resultado,numero_col)
Devuelve como resultado la longitud delcampo que se indica, proporcionando latabla y el numero de columna.
mysql_field_flags(resultado,numero_col)
Devuelve como resultado las opcionesdel campo que se indica,proporcionando la tabla y el numero decolumna.Los valores posibles pueden ser:
• not_null• primary_key
• unique_key
• multiple_key
• blob
• zerofill
• binary
• enum
• auto_increment
• timestamp
Existen muchas otras funciones como se puede observar en el punto 1.3que permiten realizar otro tipo de tareas relacionadas con lametainformación como por ejemplo:
1.18.4 Consultas: selección, borrado y modificación
Una vez que sabemos como conectarnos y como cerrar la conexion con la
base de datos, procederemos a explicar mediante un ejemplo como serealizan los diferenes tipos de consultas y los diferentes procedimientos deejecucion de cada una.
Las funciones que se van a utilizar para realizar consultas sobre una base dedatos mySQL son:
• mysql_query: que es la funcion que nos permite enviar las consultasal servidor de bases de datos, sea la consulta del tipo de que sea. Enel caso de consultas de selección es necesario almacenar el resultadopara poder trabajar con él.
• mysql_num_fields: Devuelve el numero de atributos de la consulta.
• mysql_fetch_row: Recupera el siguiente registro de la consulta.
• mysql_result: Recupera un registro concreto y dentro de esteregistro el campo que se le especifica.
• mysql_fetch_array: Recupera el siguiente registro pero en unaestructura de datos tipo array asociativo.
•
mysql_fetch_object: Recupera el siguiente registro pero en unaestructura de datos tipo clase.
Vamos a proceder a indicar mediante un ejemplo como se realizan cada unade las diferentes consultas asociadas a un servidor de bases de datosmySQL:
Para realizar el acceso concurrente hay que hacer uso de las funciones queposee mySQL para el bloqueo de tablas de forma que se puedan simulartransacciones, ya que de forma nativa no es posible realizarlas. Por lo queremitimos al lector a dirigirse al manual de mySQL para el uso de funcionesde bloqueo de tablas.
Apendice – Resumen HTMLResumen ordenado de elementos, etiquetas y atributos de HTML 4.0En esta sección, listaremos 91 elementos válidos de HTML 4.0 con susetiquetas y atributos.La tabla en la que se muestran los elementos está ordenada por la etiquetade inicio. En cada uno de los 91 elementos hay varios apartados:
• Descripción del elemento (a veces incluirá un ejemplo o aviso).• Etiqueta de inicio del elemento y si es necesaria u opcional.• Para elementos con etiquetas de final, la etiqueta se listará indicando
si es necesaria u opcional. Para elementos sin etiquetas de final(como <IMG>), se listará “elemento vacío”.
• Atributos del elemento, si existen. Todos los atributos son opcionalesa menos que se diga lo contrario.
• Tipo de contenido permitido dentro del elemento.• Categoría del elemento.
Existen varias categorías posibles para un elemento. Los elementosformarán parte de la estructura básica de HTML, la sección head o loselementos de formato de texto o bloque en la sección body o una categoríaespecial. Además, algunos elementos sólo aparecen dentro de otroelemento. Así se dividen los elementos;
• Elementos de la estructura básica: <BODY>,<HEAD>,<HTML> y<TITLE>.
• Elementos de la sección head:<BASE>, <ISINDEX>, <LINK>,<META>, <SCRIPT> y <STYLE>.
• Elementos de formato de bloque: <ADDRESS>, <BLOCKQUOTE>,<CENTER>, <DIV>, <FIELDSET>, <FORM>, <H1>, <H2>,<H3>,<H4>, <H5>, <H6>, <HR>, <ISINDEX>, <NOFRAMES>,<NOSCRIPT>, <P>, <PRE> y <TABLE>.
• Elementos de formato de texto: <A>, <APPLET>, <BASEFONT>,<BDO>, <BR>, <FONT>, <IFRAME>, <IMG>, <MAP>, <OBJECT>,<Q>, <SCRIPT>, <SPAN>, <SUB> y <SUP>.
• Elementos de formato de texto para frases: <ACRONYM>, <CITE>,<CODE>, <DFN>, <EM>, <KDB>, <SAMPLE>, <STRONG> y <VAR>.
• Elementos de formato de texto para fuentes: <B>, <BIG>, <I>, <S>,<SMALL>, <STRIKE>, <TT> y <U>.
• Construcciones especiales SGML: <!DOCTYPE> y <!--.
• Estructura especial de marcos: <FRAMESET>.
• Elementos de modelo de tabla: <CAPTION>, <COL>, <COLGROUP>,<TBODY>, <TFOOT>, <TH>, <THEAD> y <TR>.
• Elementos hijos: los elementos de definición de listas contienen lasetiquetas <DD> y <DT>. Otros tipos de elementos contienen laetiqueta <LI>. El elemento select contiene <OPTION>. El elementomap contiene <AREA>. El elemento frameset contiene <FRAME>. Elelemento fieldset contiene <LEGEND>. Finalmente, los elementos
applet y object contienen <PARAM>.
Notará que muchos elementos pueden usar los “atributos genéricos 4.0”.Éstos son los atributos del lenguaje (LANG y DIR), el atributo informativo
TITLE, los atributos de estilo e identificación (CLASS, ID y STYLE) y losatributos de evento (onClick…).
Elemento Descripción<!DOCTYPE> Declara la versión precisa de HTML que está usando
Categoría: Construcción especial SGML; sólo puede aparecer muy alprincipio de un documento HTML antes de cualquier otraetiqueta
Etiqueta de inicio: <!DOCTYPE>, necesaria
Etiqueta de final: Elemento vacío
Atributos: Especial
Contenido: ninguno
<!-- Inserta comentarios en un documento HTML que no sevisualizarán en un explorador
Categoría: Construcción especial SGML
Etiqueta de inicio: <!--, necesaria
Etiqueta de final: -->, necesaria
Atributos: Ninguno
Contenido: Cualquier datos a excepción de los guiones(--). Además elsigno (>) puede causar problemas.
<A> Inserta anclas de hipervínculos y puede dar nombre a unasección de un documento.
Categoría: Elemento de formato de texto(especial)
Etiqueta de inicio: <A>, necesaria
Etiqueta de final: </A>, necesaria
Atributos: HREF, NAME, CHARSET, TARGET, ACCESSKEY y TABINDEX,SHAPE y COORDS, además de los atributos genéricos.
Contenido: Datos y/o elementos de formato de texto(excluyendo otroselementos anchor)
<ACRONYM> Indica que el texto encerrado es un acrónimo o abreviatura
<BDO> Modifica la dirección actual del flujo del texto, sólo es útilcuando se trabaja con documentos escritos en idiomas que
se leen de derecha a izquierda.Categoría: Elemento de formato de texto(especial)
Etiqueta de inicio: <BDO>, necesaria
Etiqueta de final: </BDO>, necesaria
Atributos: DIR, LANG, además de los atributos ID, CLASS, STYLE y TITLE.
Contenido: Datos y/o elementos de formato de texto
<BIG> Hace que el texto encerrado sea una unidad mayor
Categoría: Elemento de formato de texto(fuente física)
Etiqueta de inicio: <BIG>, necesaria
Etiqueta de final: </BIG>, necesaria
Atributos: Ninguno excepto los genéricos.
Contenido: Datos y/o elementos de formato de texto
<BLOCKQUOTE> Indica una alusión a otra fuente; a menudo la alusión estáen una sangría.
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <BLOCKQUOTE>, necesaria
Etiqueta de final: </BLOCKQUOTE>, necesaria
Atributos: CITE, además de los atributos genéricos
Contenido: Datos, elementos de formato de bloque y/o elementos deformato de texto
<BODY> Contiene la sección body de un documento HTMLCategoría: Elemento de estructura básica
Etiqueta de inicio: <BODY>, necesaria
Etiqueta de final: </BODY>, necesaria
Atributos: BACKGROUND, BGCOLOR, TEXT, LINK, ALINK, VLINK,ONLOAD Y ONUNLOAD además de los atributos genéricos
Contenido: Datos, elementos de formato de bloque, elementos deformato de texto y además los elementos ins y del.
<BR> Crea un salto de línea
Categoría: Elemento de formato de texto(especial)
Etiqueta de inicio: <BR>, necesaria
Etiqueta de final: Elemento vacíoAtributos: CLEAR, además de los atributos genéricos ID, CLASS,
STYLE y TITTLE.
Contenido: Ninguno
<BUTTON> Crea un botón como control de formulario
Categoría: Elemento control de formulario
Etiqueta de inicio: <BUTTON>, necesaria
Etiqueta de final: </BUTTON>, necesaria
Atributos: VALUE, NAME, TEYPE, DISABLED, TABINDEX, ACCESSKEY,además de los atributos genéricos 4.0 incluyendo losatributos especiales de eventos ONFOCUS y ONBLUR.
Contenido: Datos, elementos de formato de texto y/o elementos deformato de bloque (excepto los elementos anchor, form,fielset y elementos de control de formulario)
<FIELDSET> Agrupa uno o más controles de formulario
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <FIELDSET>, necesaria
Etiqueta de final: </FIELDSET>, necesaria
Atributos: Ninguno excepto los genéricos.
Contenido: Un elemento legend, seguido de controles de formulario.
<FONT> Establece o configura el tamaño, color y/o tipo de la fuente
Categoría: Elemento de formato de texto(especial)
Etiqueta de inicio: <FONT>, necesaria
Etiqueta de final: </FONT>, necesaria
Atributos: SIZE, COLOR, FACE, además de los atributos genéricos ID,CLASS, STYLE y TITLE
Contenido: Datos y/o elementos de formato de texto
<FORM> Delimita un área que contiene un formulario interactivoCategoría: Elemento de formato de bloque
Etiqueta de inicio: <FORM>, necesaria
Etiqueta de final: </FORM>, necesaria
Atributos: ACTION, METHOD, ENCTYPE, TARGET, ACCEPT-CHARSET,además de los atributos genéricos 4.0, también losatributos de evento especiales ONSUBMIT y ONRESET
Contenido: Datos, elementos de formato de bloque y/o elementos deformato de texto ( excepto para otros elementos form; unformulario no puede anidarse dentro de otro)
<FRAME> En un documento de marcos, indica el archivo o URL usadocomo contenido de un marco
Categoría: Elemento hijo: sólo se puede usar en un elementoframeset
Etiqueta de inicio: <FRAME>, necesaria
Etiqueta de final: Elemento vacío
Atributos: SRC, NAME, MARGINWIDTH y MARGINHEIGHT,FRAMEBORDER, NORESIZE y SCROLLING además de losatributos genéricos ID.
Contenido: Ninguno
<FRAMESET> Crea un documento de marcos que define la visualizaciónde documentos múltiples en los distintos marcos de laventana de un explorador
Categoría: Elemento estructura especial de marcos; reemplaza elelemento body en la estructura básica
Etiqueta de inicio: <FRAMESET>, necesaria
Etiqueta de final: </FRAMESET>, necesaria
Atributos: ROWS, COLUMNS, ONLOAD y ONUNLOAD.
Contenido: Cualquier número de elementos frame y/o frameset . También deberíamos usar un elemento noframe aunque nose recomienda del todo.
<H1> Crea un título de primer nivel
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <H1>, necesaria
Etiqueta de final: </H1>, necesariaAtributos: ALIGN, además de los atributos genéricos
Contenido: Datos y/o elementos de formato de texto
Atributos: ALIGN, además de los atributos genéricos
Contenido: Datos y/o elementos de formato de texto
<H3> Crea un título de tercer nivel
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <H3>, necesaria
Etiqueta de final: </H3>, necesaria
Atributos: ALIGN, además de los atributos genéricos
Contenido: Datos y/o elementos de formato de texto
<H4> Crea un título de cuarto nivel
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <H4>, necesaria
Etiqueta de final: </H4>, necesaria
Atributos: ALIGN, además de los atributos genéricos
Contenido: Datos y/o elementos de formato de texto
<H5> Crea un título de quinto nivel
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <H5>, necesaria
Etiqueta de final: </H5>, necesaria
Atributos: ALIGN, además de los atributos genéricos
Contenido: Datos y/o elementos de formato de texto
<H6> Crea un título de sexto nivel
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <H6>, necesaria
Etiqueta de final: </H6>, necesaria
Atributos: ALIGN, además de los atributos genéricos
Contenido: Datos y/o elementos de formato de texto
<HEAD> Contiene la sección head de un documento
Categoría: Elemento de estructura básica
Etiqueta de inicio: <HEAD>, opcional
Etiqueta de final: </HEAD>, opcionalAtributos: Los atributos genéricos 4.0 para el idioma (LANG y DIR) y
el atributo PROFILE
Contenido: Debe contener un único elemento title. Además, puedecontener un único elemento isindex y/o un elemento base.
También puede contener múltiples elementos script, style,meta y link
<HR> Inserta una línea horizontal para dividir dos seccionesdiferentes
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <HR>, necesaria
Etiqueta de final: Elemento vacío
Atributos: ALIGN, SIZE, WIDTH, NOSHADE, además de los atributosgenéricos (excepto los dos atributos de idioma, LANG yDIR). Se recomienda su uso en hojas de estilo en lugar de
<MAP> Crea una colección de zonas de foco para su uso en unmapa de imágenes procesado en el cliente
Categoría: Elemento de formato de texto (especial)
Etiqueta de inicio: <MAP>, necesaria
Etiqueta de final: </MAP>, necesaria
Atributos: NAME, además de los atributos genéricos
Contenido: Uno o más elementos area
<MENU> Crea una lista de estilo “munú”
Categoría: Elemento de formato de bloque(lista)
Etiqueta de inicio: <MENU>, necesaria
Etiqueta de final: </MENU>, necesaria
Atributos: COMPACT, además de los atributos genéricos
Contenido: Uno o más elementos <LI><META> Define información sobre el documento
Categoría: Elemento de sección head
Etiqueta de inicio: <META>, necesaria
Etiqueta de final: Elemento vacía
Atributos: NAME o HTTP-EQUIV junto con el atributo CONTENT,SQUEME, además de los atributos genéricos de idioma(LANG y DIR)
Contenido: Ninguno
<NOFRAMES> Delimita el contenido que debe visualizarse sólo cuando elexplorador no reconoce marcos
Categoría: Elemento de formato de bloqueEtiqueta de inicio: <NOFRAMES>, necesaria
Etiqueta de final: </NOFRAMES>, necesaria
Atributos: además de los atributos genéricos
Contenido: Primer uso: elemento bod y (puede contener datos,elementos de formato de bloque y/o elementos de formatode texto) segúndo uso: datos, elementos de formato debloque y/o elementos de formato de texto.
<NOSCRIPT> Delimita el contenido que sólo se visualizará si elexplorador no reconoce scripts no reconoce scripts activos
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <NOSCRIPT>, necesariaEtiqueta de final: </NOSCRIPT>, necesaria
Atributos: Ninguno excepto los atributos genéricos
Contenido: Datos, elemento de formato de bloque y/o elementos deformato de texto
<OBJECT> Inserta un objeto de cualquier tipo, como un sonido, unaimagen, una aplicación, un objeto movie, un archivo detexto u otro documento HTML
Categoría: Elemento de formato de bloque texto (especial)
Etiqueta de inicio: <OBJECT>, necesaria
Etiqueta de final: </OBJECT>, necesaria
Atributos: DATA, HEIGHT y WIDTH, TYPE, ALIGN, HSPACE, VSPACE,BORDER, NAME, TABINDEX, CLASSID, CODEBASE,CODETYPE, STANDBY, DECLARE, ARCHIVE, además de losatributos genéricos
Contenido: Uno o más elementos param, seguido de datos, elementosde formato de texto y/o elementos de formato de bloque;se pueden anidar varios objetos dentro de otros
<OL> Crea una lista ordenadaCategoría: Elemento de formato de bloque(lista)
Etiqueta de inicio: <OL>, necesaria
Etiqueta de final: </OL>, necesaria
Atributos: COMPACT, TYPE, START, además de los atributos genéricos
Contenido: Uno o más elementos <LI>
<OPTION> Crea elementos menú para un control de formulario delelemento select
Categoría: Elemento hijo: sólo puede usarse en un elemento select
Etiqueta de inicio: <OPTION>, necesaria
Etiqueta de final: </OPTION>, necesaria
Atributos: VALUE, SELECTED, DISABLED, además de los atributosgenéricos
Contenido: Datos
<P> Crea un párrafo
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <P>, necesaria
Etiqueta de final: </P>, opcional
Atributos: ALIGN, además de los atributos genéricos
Contenido: Datos y/o elementos de formato de texto
<PARAM> Pasa un parámetro a un elemento applet u object ; este
parámetro controla el funcionamiento de la aplicaciónCategoría: Elemento hijo: sólo puede usarse en un elemento applet u
object
Etiqueta de inicio: <PARAM>, necesaria
Etiqueta de final: Elemento vacío
Atributos: NAME, VALUE, VALUETYPE y TYPE, además de los atributosgenéricos ID
Contenido: Ninguno
<PRE> Crea un bloque de texto con formato previo para quepueda disponer de líneas en un lugar determinado y creararte textual
Categoría: Elemento de formato de bloque
Etiqueta de inicio: <PRE>, necesaria
Etiqueta de final: </PRE>, necesaria
Atributos: WIDTH, además de los atributos genéricos
Contenido: Datos y/o elementos de formato de texto (excepto loselementos img, big, small, sub, sup, basefont, font, applet y object )
<Q> Crea citas integradas
Categoría: Elemento de formato de texto(especial)
Etiqueta de inicio: <Q>, necesaria
Etiqueta de final: </Q>, necesaria
Atributos: CITE, además de los atributos genéricosContenido: Datos y/o elementos de formato de texto
<S> Hace que el texto encerrado aparezca con una tachadura
<SMALL> Disminuye en una unidad el texto encerrado
Categoría: Elemento de formato de texto
Etiqueta de inicio: <SMALL>, necesaria
Etiqueta de final: </SMALL>, necesaria
Atributos: Ninguno, excepto los atributos genéricos
Contenido: Datos y/o elementos de formato de texto
<SPAN> Elemento genérico de formato de texto, útil para indicardónde se debe aplicar una hoja de estilos, para dar unnombre a una sección usando los atributos genéricosCLASS o ID o para asignar un idioma a una sección
Categoría: Elemento de formato de texto (especial)
Etiqueta de inicio: <SPAN>, necesaria
Etiqueta de final: </SPAN>, necesaria
Atributos: Ninguno excepto los atributos genéricos
Contenido: Datos y/o elementos de formato de texto
<STRIKE> Hace que el texto aparezca tachado
Categoría: Elemento de formato de texto(fuente física)
Etiqueta de inicio: <STRIKE>, necesariaEtiqueta de final: </STRIKE>, necesaria
Atributos: Ninguno excepto los atributos genéricos
Contenido: Datos y/o elementos de formato de texto
CELLSPACING, CELLPADDING además de los atributosgenéricos
Contenido: Un elemento opcional caption, seguido de cualquiernúmero de elementos colgroup opcionales y/o col, seguidode un elemento thead opcional, seguido de un tfoot opcional, seguido de uno o más elementos tbody .
<TBODY> Crea un grupo de filas en una tabla, utilizado como cuerpode la tabla; conveniente para configurar los atributos demuchas filas de datos al mismo tiempo
Categoría: Elemento de modelo de tabla
Etiqueta de inicio: <TBODY>, opcional
Etiqueta de final: </TBODY>, opcional
Atributos: ALIGN, CHAR, CHAROFF, VALIGN, además de los atributosgenéricos