Un lenguaje importante y que hemos dejado de lado por años es el ya muy famoso lenguaje PHP. En desagravio publicamos esta entrada y le queremos dar características especiales: no insisteremos en ser detallistas al extremo, se trata de una introducción, un tutorial que lleve paso por paso a cualquier persona que desee aprender dicho lenguaje de programación. Por ello no publicaremos su historia, configuración del servidor, etcétera. Os recordamos que para aprender PHP sería bueno tener conocimientos mínimos de HTML, CSS y JavaScript.
PHP de manera "sucia y rápida".
No nos asustéis con la traducción al castellano del popular refrán en idioma inglés "quick and dirty", que siempre se recuerda cuando se necesita desarrollar algún software que goce de pragmatismo al extremo. Lo que queremos decir es que cuando uno necesita resultados rápidos pues conviene saltarse los "paso a paso" que siempre usamos para aprender algo nuevo.
Elementos básicos en PHP.
El lenguaje PHP bien puede utilizarse en comandos por una venta terminal o bien lo podemos usar un proceso por lotes almacenados en un archivo de texto al cual le colocaremos una extensión ".php" para identificar de manera rápida su contenido. Siendo entonces un fichero en texto plano procedemos a escribir dentro de él lo siguiente:
<?php // aquí va el código ?>
Estas tres simples líneas le indican al servidor dónde comienza y termina las instrucciones que va a ejecutar en lenguaje PHP. Esto es así porque dentro de un archivo ".html" podremos incluir código especial que muy probablemente emita código en lenguaje HTML de manera dinámica (por ejemplo, una consulta en una base de datos para mostrar los valores seleccionados por el usuario). Las dos barras inclinadas "//" indica que todo lo que está a la derecha y hasta el final de la línea son comentarios y que no deben ni serán ejecutados. Tambien sirve "#" para comentar una línea, pero si necesitamos comentar varias líneas escribimos "/* comentario(s) */".
Con excepción de las líneas de comentarios, inicio y cierre, toda las demás líneas deben terminar con un punto y coma ";".
Variables en PHP.
Toda variable comienza con "$" y un caracter A-Z (mayúsculas y/o minúsculas) y/o el guión bajo "_", luego se pueden usar números y/o caracteres sin dejar espacios. Se pueden clasificar en:
- Número entero (positivos o negativos).
- Número flotante (número decimal positivos o negativos).
- Booleano (verdadero o falso).
- Cadena de caracteres (las almacenamos con comillas simples).
Hay cuatro tipos más de variables avanzadas que veremos en su debida oportunidad. Una vez hallamos guardado un valor en una variable se pueden mostrar por pantalla por medio de las ordenes echo o print(), las cuales tiene muchas opciones que veremos más adelante pero detallaremos que no es lo mismo usar comillas simples que dobles con dichas funciones, mirad este ejemplo:
<?php miValor = 5; echo '<p>El valor es $miValor .</p>'; echo "<p>El valor es $miValor .</p>"; ?>
Y devolverá lo siguiente (código HTML recibido por el navegador, en Mozilla Firefox pulsad las teclas CTRL+U):
<p>El valor es $miValor.</p><p>El valor es 5.</p>
Así vemos que el comando echo bien puede "pasarle" al navegar el texto (en este caso texto + lenguaje HTML) o bien puede mediante instrucciones especiales "pasar" el valor almacenado en una variable. Notad que aunque los comandos en PHP es indistinto si los escribimos en mayúsculas y/o minúsculas las variables son sensibles: no es lo mismo $miValor que $MiValor, mucho cuidado con eso que causa bastantes dolores de cabeza a nosotros los programadores.
Otro uso en el campor de las variables, aunque poco utilizado, es declarar una segunda variable por referencia con otra variable. Para esto usamos el caracter "&" justo delante de la variable que queremos pasar. Ejemplo:
$a = "texto"; $b = &$a; echo $b;
Suma de variables en PHP.
Para sumar dos variables, ya sea para presentarla por pantalla o para almacenarla en otra variable, utilizamos los operadores matemáticos de costumbre, mirad:
<?php $a = 5; $b = 10; $c = $a + $b; echo "a + b ="; echo $a + $b; echo "<br>c="; echo $c; ?>
Concatenar variables en PHP.
Decimos concatenar en el caso de variables de texto, en PHP con un simple punto unimos la variables:
<?php $a = "Inicio"; $b = " fin."; echo $a.$b; ?>
Declaración y alcance de las variables en PHP.
Como estudiamos hace poco, no es necesario decirle a PHP qué tipo de variable vamos a trabajar, simplemente ponemos los valores y el lenguaje se encarga de almacenarlo en el lugar adecuado. Cuando vayamos a realizar operaciones con dichas variables éstas se convertirán de a un valor correcto, por ejemplo:
<?php $a = "palabra"; $b = 5; echo $a + $b; echo "<br>"; echo $a.$b; ?>
El resultado por pantalla será "5", es decir, el valor de $a es una cadena de texto cuyo valor numérico es cero y así lo convierte para sumarlo a $b. Por el contrario, en la siguiente línea $a.$b estamos concatenando cadenas de texto y el valor de $b se convierte en el caracter "5" para mostrar lo siguiente:
5 palabra5
En PHP podemos "forzar" que una variable sea de un tipo específico que necesitemos, para ello usar el comando settype() con dos argumentos entre paréntesis separado por una coma: nombre de la variable y luego el tipo de variable ("integer", "double", "string", "booelan"), ejemplo: «setttype( $a , "integer")».
Otra manera de forzar a un tipo de variable es de la siguiente manera: «$variable = (int) $variable;» en este caso (int) o (integer) indica que lo cambie a tipo entero pero podemos usar también (real), (double), (float), (boolean) o (bool).
Otra cosa es el alcance de las variables: si están en el módulo principal las variables serán globales y si están dentro de una función serán locales y solamente podrán ser accesibles dentro de la función donde fueron "creadas". Si necesitamos que una variable dentro de una función esté disponible para otras funciones (y en el módulo principal) usaremos la palabra global y a continuación le asignaremos el valor; de facto estamos declarando la variable al asignarle un valor.
Cuando declaramos una variable como global ésta se adiciona a la matriz $GLOBALS['nombre_de_variable'] y podemos acceder a ellas de esta manera nemotécnica, especialmente es útil para usarla dentro de funciones; ejemplo: «echo $GLOBAL['cadena']». Aunque aún falta mucho para ver las funciones, podemos adelantar el siguiente código que ilustra el alcance de las variables locales y globales:
<?php $variable1 = 'ABC'; $variable2 = 123; function mi_funcion(){ $variable1='perro'; echo $variable1.'<br>'; echo $GLOBALS["variable1"].'<br>'; echo $GLOBALS["variable2"].'<br>'; } mi_funcion(); ?>
Si necesitamos que una variable dentro de una función conserve su valor entre llamadas, debemos declararla con el comando static dentro de la función a la que pertenece y asignarle un valor, por supuesto.
Incrementos y decrementos en variable numéricas.
Como es popular en lenguaje C++ los incrementos se logran colocándole "++" (o "--" si es un decremento) luego del nombre de la variable. En este ejemplo ambas líneas son equivalentes pero en una escribimos más que en la otra:
<?php $a = 10; $a = 10 + 1; echo $a."<br>"; $a = 10; $a++; echo $a."<br>"; ?>
Pero fijaos que al mostrarlo en pantalla, cuando el incremento (o decremento) lo colocamos ANTES o DESPUÉS de la variable se comporta de manera diferente, cambia el orden de como se ejecutan las instrucciones:
<?php $a = 10; echo "Incremento posterior:<br>"; echo $a++."<br>"; echo $a."<br>";
$a = 10; echo "Incremento anterior:<br>"; echo ++$a."<br>"; echo $a."<br>"; ?>
Operaciones artiméticas en PHP.
Aparte de las cuatro operaciones básicas (suma "+", resta "-", multiplicación "*" y división "/") debemos señalar también al módulo "%" (devuelve el residuo de la división, si es cero la división es exacta) y la exponenciación "**".
Otros operadores importantes son la suma y asignación "+=", resta y asignación "-=", multiplicación y asignación "*=", división y asignación "/=", módulo y asignación "%=" y concatenación y asignación ".=". Esencialmente lo que hace es aplicar el operador aritmético al valor ya almacenado en la variable con el otro valor a la derecha del signo de igualdad. El siguiente código ilustrará mejor:
<?php $x=10;$x+=5;echo $x."<br>"; # resultado 15 $x=10;$x-=5;echo $x."<br>"; # resultado 5 $x=10;$x*=5;echo $x."<br>"; # resultado 50 $x=10;$x/=5;echo $x."<br>"; # resultado 2 $x=10;$x%=5;echo $x."<br>"; # resultado 0 ?>
Operadores de comparación.
Necesitamos oepradores que permitan comparar dos variables, pero en PHP hay ciertas condiciones a evaluar. Para empezar ya sabemos que las variables puede almacenar valor numérico y en la siguiente línea le podemos almacenar una cadena de texto, es por ello que necesitamos comparar, incluso, si son el mismo tipo de variable. Por ejemplo, para nosotros 5 es igual que 5,00 paro para PHP el primer valor es un número entero positivo y el segundo es un valor decimal positivo (nosotros en este sitio web nuestro separador decimal es la coma pero a nivel de lenguajes de computación el separador decimal es el punto). Veamos los que disponemos:
- "==": Comprueba si son iguales.
- "!=": Comprueba si son distintos.
- "===": Comprueba si son iguales y de exactamente el mismo tipo.
- "!==": Comprueba si son distintos o de distinto tipo.
- "<>": Diferente (igual que !=).
- "<": Menor que, comprueba si un valor es menor que otro.
- ">": Mayor que.
- "<=": Menor o igual que.
- ">=": Mayor o igual que.
- "<=>": Comparador de orden (PHP 7).
- "??": uno o el otro (PHP 7).
Trabajando con variables de texto.
PHP contiene comandos (funciones no declaradas por nosotros, funciones implícitas) que nos facilitan grandemente nuestro trabajo con cadenas de texto, ya vimos echo y print() veamos otras más.
Contando el número de caracteres.
Usaremos el comando strlen() pasando como argumento nuestra variable (osea colocamos nuestra variable dentro de los paréntesis del comando). Por ejemplo, el siguiente código devolverá el valor de treinta y cinco letras:
<?php $cadena = "República Bolivariana de Venezuela"; echo strlen($cadena); ?>
Pero el problema aquí es que no son 35 caracteres sino 34: la letra u acentuado es contada como 2 caracteres porque se necesitan 2 bytes para representarla. En realidad esta función devuelve el número de bytes, no el número de caracteres. Ya vemos que nuestro hermoso idioma castellano, normado por nuestro brillante Don Andrés Bello, nos da y seguirá dando trabajo a nosotros los programadores.
Contando el número de palabras en una cadena de texto.
Teniendo en cuenta que una palabra esta delimitada antes y después por uno o más espacios y esté constituida por caracteres A~Z y/o a~z, el comando que usaremos es str_word_count(). Siguiendo con el ejemplo anterior:
<?php $cadena = "República Bolivariana de Venezuela"; echo str_word_count($cadena); ?>
Y el resultado será simplemente cinco ¿Qué sucedió si sólo hay cuatro palabras? Pues lo mismo de siempre: los lenguajes de programación están escritos por gente de habla inglesa para los cuales los acentos, la letra eñe -y demás caracteres no pertenecientes al idioma inglés simplemente no existen. Pero esperen, aún hay más: los números tampoco cuentan como caracteres así que por lo menos no nos podemos quejar de que ellos allá en el departamente de programación de PHP no son estrictos con ellos mismos. Veremos de forma ampliada que este comando acepta un segundo parámetro llamado format que permite el resutlado de manera distinta: si es cero es el valor por defecto, uno devuelve una matriz conteniendo cada una de las palabras y dos devuelve la posición numérica de cada una de las palabras, veamos:
<?php $cadena = "República Bolivariana de Venezuela"; echo "<br>Palabras encontradas:"; echo str_word_count($cadena); echo "<br><br>Valor FORMAT por defecto cero:<br>"; print_r(str_word_count($cadena, 0)); echo "<br><br>Matriz con cada una de las palabras:<br>"; print_r(str_word_count($cadena, 1)); echo "<br><br>Matriz con la ubicación de cada una de las palabras:<br>"; print_r(str_word_count($cadena, 2)); ?>
Lo cual devuelve lo siguiente:
Palabras encontradas:5 Valor FORMAT por defecto cero: 5 Matriz con cada una de las palabras: Array ( [0] => Rep [1] => blica [2] => Bolivariana [3] => de [4] => Venezuela ) Matriz con la ubicación de cada una de las palabras: Array ( [0] => Rep [5] => blica [16] => Bolivariana [35] => de [42] => Venezuela )
Fijaos que la cadena de texto hemos introducido más espacios adicionales, la hemos escrito en dos líneas pero PHP la interpreta como una sola ya que al final de la segunda línea es que se encuentra el punto y coma que indica el final. También ya sabéis que la letra u acentuada cuenta como dos caracteres (ya que esa característica del juego de caracteres UTF-8 permite "ampliar" el número de bytes para representar los más de 65 mil caracteres que componen el UNICODE) y es por ello que "blica" comienza en 5 y no en 4.
Pensando ellos allá en lo anterior, a partir de la versión PHP 5.1.0 se le agregó un tercer argumento que permite especificar una excepción a los caracteres que nosotros consideramos no delimita una palabra. Esto conlleva definir un valor constante a lo largo de todo nuestro programa por medio del comando define() que toma dos argumentos separados por una coma: primero el nombre de la variable en sí y segundo el conjunto de caracteres que consideramos NO delimita una palabra y encerrados entre comillas, mirad el siguiente ejemplo:
<?php define( Castellano, 'áéíóúÁÉÍÓÚüÜñÑ'); $cadena = "República Bolivariana de Venezuela. En Güigüe se siembra mucho el ñame y el limón."; echo "<br><br>Valor FORMAT por defecto cero:<br>"; print_r(str_word_count($cadena, 0, Castellano)); echo "<br><br>Matriz con cada una de las palabras:<br>"; print_r(str_word_count($cadena, 1, Castellano)); echo "<br><br>Matriz con la ubicación de cada una de las palabras:<br>"; print_r(str_word_count($cadena, 2, Castellano)); ?>
Importante hacer notar que los valores constantes NO necesitan el signo "$" delante: ya PHP sabe que es un valor "especial" a tomar en cuenta.
Cadenas reversadas.
Si queremos encontrar palíndromos esta función está adecuada para ello: strrev() devuelve una cadena de texto al revés, un ejemplo en idioma latín:
<?php // Latín: "Damos vueltas en la noche y somos consumidos por el fuego" echo "in girum imus nocte et consumimur igni<br>"; echo strrev("in girum imus nocte et consumimur igni"); ?>
Encontrar una subcadena en una cadena de texto.
Función bastante usada: necesitamos saber si en una cadena de texto existe una subcadena: strpos() devolverá un valor numérico, cero o mayor si consigue la subcadena, de lo contrario devolverá un valor falso. Debemos tener en cuenta que falso=cero y cualquier otro valor es verdadero, como esta función puede devolver cualquier valor entonces debemos evaluar con el triple signo de igualdad para estar seguros que no se consiguió la subcadena. Ejemplo:
<?php $cad=strpos("Ministerio del Poder Popular para la Comunicación e Información.", "Comunicación"); // if ($cad===false){ echo "falso"; }else{ echo $cad; } ?>
Sustituir una subcadena de texto.
Dada una cadena de texto necesitamos sustituir, si se consigue dentro de ésta, por otra cadena de texto: str_replace() hará el trabajo si le colocamos como primer argumento la subcadena a buscar, el segundoa rgumento la cadena que sustituirá -de ser encontrada- y la cadena de texto en donde se buscará. Ejemplo:
<?php $cad=str_replace("Sulia", "Zulia", "Maracaibo, estado Sulia."); echo $cad; ?>
Extraer una subcadena de texto.
Muchas veces necesitamos extraer un subcadena de texto a partir de su posición numérica hasta el fin de la cadena de texto: substr() con tres argumentos: cadena de texto, comienzo y longitud. Si se omite la longitud pues devolverá hasta el final de la cadena de texto. Si el número de comienzo es negativo devolverá la cadena contando como primer caracter el primero de la derecha, osea el final. Si no consigue la cadena devolverá un valor falso o una cadena de texto vacía.
<?php # Muestra "para no serlo" echo substr("Llamarse jefe para no serlo es el colmo de las desgracias.",14,13); ?>
s
Fuentes consultadas.
En idioma inglés:
- "PHP 5 introduction" at w3schools.com
- "Concatenar variables con PHP" por SapoClay.
The post PHP tutorial appeared first on KS7000+WP.