Strings
Strings
Strings
String en inglés significa cadena, aunque realmente se entiende por String una serie de
caracteres, lo que simplemente llamamos texto. Los datos de tipo String son fundamentales en
cualquier aplicación informática. Aunque anteriormente ya hemos utilizado datos de tipo
String, ahora vamos a desglosar lo que podemos hacer con Strings en PHP.
Asignación de Strings
Ya sabemos que para asignar valores a un string, basta con utilizar el operador “=”. El texto a
asignar se debe poner entre comillas simples o dobles:
$cadena1="Soy un texto";
$cadena2='Yo también';
Concatenación de textos
$cadena1="Hola a";
$cadena2='todos';
$cadena3=$cadena1." ".$cadena2;
echo $cadena3;
Por pantalla saldrá Hola a todos. Vemos que podemos concatenar tanto variables de tipo
String como textos literales (concatenamos las variables $cadena1 y $cadena2 y el espacio en
blanco)
$cadena1="Hola ";
$cadena1 .=" a todos";
echo $cadena1;
Ya sabemos que podemos traducir el contenido de variables por su valor dentro de un texto:
$libre="free";
echo "En inglés libre es $libre";
Con esto se mostraría: En inglés libre es free
Pero si quisiéramos mostrar el texto: Me gusta nadar en freestyle
$libre="free";
echo "Me gusta nadar en $librestyle";
Ya que no existe la variable $librestyle. Para que se interpreten la variable $libre y el texto style
como textos separados, deberíamos poner la variable entre llaves:
$libre="free";
echo "Me gusta nadar en {$libre}style";
Podemos usar los strings como si fueran arrays de caracteres, donde cada elemento del array
sería un caracter del string:
NOTA: Aunque los strings se puede utilizar como si fueran arrays, realmente no lo son, y no
puede usarse foreach para recorrerlos ni ninguna función de arrays.
Cadenas heredoc
Nos permiten asignar valores de texto extensos, sin usar comillas, a través de delimitadores:
$nombre="Bill Gates";
$cita=<<<texto
Estar rodeado de información no significa que estemos usando la informaci
ón adecuada
<br/>Firmado:$nombre<br>
texto;
echo $cita;
Hemos remarcado el texto que se almacena en la variable $cita. El texto a asignar es el que
sigue al símbolo de inserción de documento <<< y al marcador texto (puede usarse cualquier
palabra como marcador de texto) tras el último carácter, debe volver a aparecer el marcador
texto para indicar el final. En la pantalla se mostrará:
Cadenas nowdoc
Funcionan igual que las cadenas heredoc, pero entiende que el texto es totalmente literal por
tanto no se interpretan los nombres de variables ni los códigos de escape. Para diferenciar las
dos notaciones, en esta se pone el marcador entre comillas simples pero sólo en el inicio, no
en el fin:
$nombre="Bill Gates";
$cita=<<<'texto'
Estar rodeado de información no significa que estemos usando la informaci
ón adecuada
<br/>Firmado:$nombre<br>
texto;
echo $cita;
Para la manipulación de las cadenas de caracteres o Strings es útil conocer las funciones
básicas de manipulación. No vamos ver cada una de las funciones de PHP, que son muchas.
Simplemente veremos las más básicas y de uso más común.
FUNCIÓN STRLEN
Con la función strlen obtenemos el número de caracteres que forman la cadena completa.
$cadena="Informatica";
$tamanio=strlen($cadena);
La función substr devuelve una subcadena de la cadena original, es decir, una parte de la
cadena original. Esta función tiene 3 parámetros:
Substr($cadena,ini,tamaño)
Debemos tener en cuenta que la numeración de la posición de los caracteres empieza por
cero. Por ejemplo, para la cadena WiFi, que tiene 4 caracteres, el carácter en posición 0 es W,
en posición 1 es i, en la posición 2 está la F y en posición 3 es i.
$cadenaS = "Informatica";
Ejercicio
Crea la variable $cadena con el valor “SistemasyRedes”
Muestra por pantalla las subcadenas:
“SistemasyRedes”
“Sistemas”
“Redes”
“y”
FUNCIÓN STR_REPLACE
Esta función se utiliza para reemplazar caracteres dentro de una cadena de caracteres. La
función devuelve la frase original con todas las apariciones de la cadena a buscar reemplazadas
con una cadena de reemplazo especificada.
echo $texto;
El resultado será:
En el código que hemos escrito no hemos reemplazado el valor de la variable $texto por un
nuevo contenido. Sólo hemos mostrado por pantalla el resultado que nos devuelve la función.
Sin embargo, si hacemos
echo $texto;
echo strtolower($cadena);
echo strtoupper($cadena);
FUNCIÓN COUNT_CHARS Y SUBSTR_COUNT
$cadena = 'jueves';
Otra función útil es substr_count($cadena, $subcadena). Esta función nos devuelve el número
de veces que aparece la subcadena dentro de la cadena.
$cadena2 = 'Martes';
Devuelve la cadena con cada una de sus palabras con la primera letra en
ucwords($cadena);
mayúsculas
str_repeat($cadena,
Devuelve la cadena repetida $numVeces siendo éste un número entero.
$numVeces)
Ejercicio
A partir del array:
$nombres =
array('roberto','leocadio','marta','maria','lucas','jorge','miriam','ernesto','manuel')
Genera un nuevo array con aquellos nombres que comiencen con la letra m.
Para ello puedes tener en cuenta que una cadena de texto también se puede considerar un
array de caracteres.
Mostrar el contenido de ambos arrays en pantalla, con los nombres separados por comas.
CIFRADO
PHP tiene varias funciones para cifrar, lo más habitual es utilizarlas para esconder una
contraseña u otros textos que queremos ocultar a quien pueda espiar la comunicación entre
nuestro servidor PHP y el cliente.
Algoritmo de cifrado
La vulnerabilidad de los hash depende del algoritmo de cifrado. Los más habituales son MD5,
SHA1 y SHA256, para los que PHP tiene varias funciones. Pero no son muy recomendables
porque se pueden descifrar utilizando algoritmos de fuerza bruta aprovechando la potencia de
las máquinas actuales.
Función pasword_hash
Es la función recomendada para el cifrado.
Password_hash(texto,algoritmo[,opciones])
$cadena="012345";
$cifrada=password_hash($cadena,PASSWORD_DEFAULT,array("salt"=>"123456789A
BCDEFGHAIJKLM"));
echo $cifrada;
La función escribe
$2y$10$123456789ABCDEFGHAIJK.StnopsEOfT0KfDE3HoUL6BXcVJhoMI2
Aquí vemos las características del algoritmo utilizado:
$2y$ : indica el algoritmo utilizado. En este caso, el algoritmo Blowfish
10$: coste empleado, en este caso 10
123456789ABCDEFGHAIJK: sal utilizada
.StnopsEOfT0KfDE3HoUL6BXcVJhoMI2 texto hash