Strings

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

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

También hemos visto anteriormente que el operador de concatenación de textos es el ‘.’

$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)

También podríamos escribirlo así:

$cadena1="Hola ";
$cadena1 .=" a todos";

echo $cadena1;

Uso de variables en Strings. Uso de llaves

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

El siguiente código nos daría error:

$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";

Strings como Arrays de caracteres

Podemos usar los strings como si fueran arrays de caracteres, donde cada elemento del array
sería un caracter del string:

$cadena1="Este texto es una prueba";


echo $cadena1[6];
con este ejemplo, mostraríamos por pantalla la letra e que es el 6º carácter del string.

También podríamos cambiar un caracter del string:

$cadena1="Este texto es una prueba";


$cadena1[6]="Y";
echo $cadena1;

Y por pantalla se mostraría: Este tYxto es una prueba

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á:

Estar rodeado de información no significa que estemos usando la información adecuada


Firmado:Bill Gates

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;

Ahora por pantalla veríamos:

Estar rodeado de información no significa que estemos usando la información adecuada


Firmado:$nombre

Como vemos, no se ha interpretado la variable $nombre, porque ha entendido que es un texto


normal.

Funciones con strings

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);

echo "La longitud de la cadena es $tamanio";


FUNCIÓN SUBSTR

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)

- La variable que contiene la cadena.


- Número que representa la posición en la que comenzará a ser extraída la subcadena.
- Número que indica la cantidad de caracteres que serán extraídos. Este argumento es
opcional. Si se omite se tomará hasta el final de la cadena original.

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";

$sub1 = substr($cadenaS, 2);

$sub2 = substr($cadenaS, 2, 2);

echo "La subcadena número uno es: $sub1 <br />";

echo "La subcadena número dos es: $sub2";

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.

str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal)


$texto = "Donde dije digo digo Diego.";

echo str_replace("Diego", "recortes", $texto);

echo "<br />";

echo $texto;

El resultado será:

Donde dije digo digo recortes.


Donde dije digo digo Diego.

Si nos fijamos en el resultado, en la cadena de caracteres $texto, hemos sustituido los


caracteres "Diego" por "Recortes" y hemos devuelto el resultado sin modificar la variable de
entrada.

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

$texto = str_replace("Diego", "recortes", $texto);


La variable $texto sí cambiará de valor.

Podemos pasarle a la función un parámetro adicional que nos indicará la cantidad de


reemplazos que se han hecho:

str_replace (cadena a buscar,cadena de reemplazo, $cadenaOriginal, $numReemplazos)

$texto = "No eres un árbol, muévete";

echo str_replace("e", "*", $texto, $reemplazos );

echo '<br/>Se han realizado: '.$reemplazos. ' reemplazos<br/>';

echo $texto;

FUNCIONES STRTOLOWER Y STRTOUPPER

Las funciones strtolower y strtoupper transforman una cadena de caracteres en la misma


cadena en minúsculas o mayúsculas respectivamente.

$cadena = "EstA cadeNa no es RarA";

echo strtolower($cadena);

echo "<br />";

echo strtoupper($cadena);
FUNCIÓN COUNT_CHARS Y SUBSTR_COUNT

La función count_chars sirve para contar el número de apariciones de un carácter en una


cadena.

count_chars ( $cadena, $modo)

El parámetro $modo es un entero opcional. Si no se especifica vale 0 por defecto. Nosotros la


usaremos con 1:

$cadena = 'jueves';

$miArray = count_chars ($cadena,1);

foreach ($miArray as $indiceNum => $veces) {

echo 'Letra: '.chr($indiceNum).' , encontrada '. $veces.' veces<br/>';

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.

$cadena1 = 'Martes Jueves Domingo Martes Domingo';

$cadena2 = 'Martes';

echo 'Martes aparece '.substr_count($cadena1, $cadena2). ' veces';


Otras funciones para String
FUNCIÓN UTILIDAD

strlen($cadena) Devuelve la longitud o número de caracteres de la cadena

Si no se especifica $opcNumCar devuelve la subcadena entre la posición


substr ($cadena, $inicio, $inicio y el fin de cadena siendo la posición inicial la cero. Si se especifica
$opcNumCar) $opcNumCar extrae $opcNumCar caracteres desde la posición $inicio
(inclusive).

ucfirst($cadena); Devuelve la cadena con la primera letra en mayúsculas

Devuelve la cadena con cada una de sus palabras con la primera letra en
ucwords($cadena);
mayúsculas

Devuelve la posición en que comienza la subcadena a partir de la


strpos ($cadena ,
posición inicial (cero) si no se especifica $opcPosInicio, o a partir de la
$subCadena,
posición $opcPosInicio si se especifica. Si no se encuentra la subcadena
$opcPosInicio )
devuelve false.

Si no se especifica $opcCaracteres, devuelve la cadena eliminando


trim ($cadena, espacios en blanco, tabuladores, saltos de línea y retornos de carro del
$opcCaracteres) principio y final de la cadena. Si se especifica $opcCaracteres, se
eliminan los caracteres especificados.

Si no se especifica $opcCaracteres, devuelve la cadena eliminando


ltrim ($cadena, espacios en blanco, tabuladores, saltos de línea y retornos de carro del
$opcCaracteres) principio de la cadena. Si se especifica $opcCaracteres, se eliminan los
caracteres especificados.

Si no se especifica $opcCaracteres, devuelve la cadena eliminando


rtrim ($cadena, espacios en blanco, tabuladores, saltos de línea y retornos de carro del
$opcCaracteres) final de la cadena. Si se especifica $opcCaracteres, se eliminan los
caracteres especificados.

chop Igual que rtrim

str_repeat($cadena,
Devuelve la cadena repetida $numVeces siendo éste un número entero.
$numVeces)

Devuelve la subcadena desde la primera aparición de $desde (incluida)


strstr ($cadena, $desde, hasta el final si no se especifica opcBoolean ó este es false. Si
$opcBoolean) $opcBoolean es true devuelve la subcadena desde el inicio hasta la
primera aparición de $desde (excluida).

strchr Igual que strstr

Devuelve el carácter correspondiente al código numérico entero $ascii


chr ($ascii)
según el código ascii
Puedes encontrar más funciones en:
http://php.net/manual/es/ref.strings.php

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.

La forma de solucionarlo es utilizando funciones que convierten la contraseña en un texto


hash obtenido a través de un algoritmo de cifrado. Obviamente, la idea es que el hash sea
indescifrable, es decir, que a partir de él no se pueda obtener el texto original.

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.

En su lugar se recomienda el uso de Blowfish.

Función pasword_hash
Es la función recomendada para el cifrado.

Password_hash(texto,algoritmo[,opciones])

• Texto → texto a cifrar


• Algoritmo → es un número entero que indica el algoritmo que se va a utilizar. Se
utilizan las constantes:

PASSWORD_DEFAULT: Utiliza el algoritmo bcrypt (el más robusto que tenga


disponible nuestra instalación de PHP)

PASSWORD_BCRYPT: Utiliza el algoritmo CRYPT_BLOWFISH para crear el hash.


Producirá un hash estándar compatible con crypt() utilizando el identificador "$2y$". El
resultado siempre será un string de 60 caracteres, o FALSE en caso de error.
• Opciones → Se trata de un array asociativo que permite usar las claves:
Salt: permite indicar una sal manual al obtener el hash. Si no se usa, la función genera
una sal aleatoria
Cost: Coste. Un valor entre 4 y 32 que indica el número de iteraciones (en base 2) que
realizará el algoritmo. Por defecto se usa 10. Poner más coste hace que se tarde más
tiempo en generar la clave a cambio de más seguridad.

$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

La idea es cifrar inicialmente una contraseña y almacenarla así. Cuando un


usuario se identifique, cifraremos el texto de la misma manera y el resultado lo
compararemos con el almacenado, utilizando password_verify
if(password_verify($cadena,"$2y$10$123456789ABCDEFGHAIJK.StnopsEOfT0KfDE3
HoUL6BXcVJhoMI2"))
{
echo "Contraseña correcta";
}
else
{
echo "Incorrecta";
}

También podría gustarte