MANEJO DE CADENAS
=========================================
Calculando la longitud de nuestra cadena
=========================================
La funciOn strlen nos facilita la longitud de una cadena de texto:
strlen (string)
<?php
$cadena = "hola como te va";
$longitud = strlen($cadena);
echo $longitud; // 15
$cadena = "hola como te va"; // un espacio extra
$longitud = strlen($cadena);
echo $longitud; // 16
?>
===================================
Eliminando espacios
===================================
Puedes eliminar espacios en blanco al comienzo o final de la cadena con la funciOn trim, o solo al
principio de la cadena con la funciOn ltrim, o solamente al final con rtrim
estas funciones eliminan por defecto espacios en blanco, caracteres de nueva lInea (\n), tabuladores (\t)
asi como los valores ascii 0 (nul) 13 (retorno de carro, \r) y 11 (tabulaciOn vertical)
<?php
echo "<pre>";
$cadena = "\thola como te va\n";
echo $cadena; // hola como te va
$sin_tab = ltrim($cadena, "\t");
echo $sin_tab; //hola como te va
$trim_primera_letra = ltrim($cadena, "h");
echo $trim_primera_letra; //ola como te va
echo "</pre>";
?>
===================================
MayUsculas y minUsculas
===================================
Podemos pasar nuestra cadena a todo mayusculas con strtoupper, o toda a minUsculas con strtolower. No convertirA
aquellas letras que no se correspondan al actual conjunto de caracteres locales
<?php
echo "<pre>";
$cadena = "hola como te vá\n"; // hola como te vA
echo $cadena;
$may = strtoupper($cadena);
echo $may ; // HOLA COMO TE V&AACUTE;
echo "</pre>";
?>
Adicionalmente, ucfirst convierte a mayUsculas el primer carActer de una cadena (si es alfabEtico) y ucwords
convierte a mayUsculas la primera letra de cada palabra en nuestra cadena.
======================================
subcadenas
======================================
Con substr podemos crear una subcadena partiendo de una cadena dada: substr ($cadena, n_inicio,n_largo); donde el
primer nUmero indica la posicion de $cadena donde empieza a contar la subcadena, y el segundo (opcional) la
longitud de la subcadena.
* Si n_inicio es un número positivo, la subcadena empieza a contar desde el inicio de $cadena (de izquierda a derecha).
El primer carActer de $cadena es 0.
* Si n_inicio es un nUmero negativo, la subcadena empieza a contar desde el final de $cadena (de derecha a izquierda).
* Si no se proporciona el valor opcional n_largo, la subcadena devuelta será desde n_inicio hasta el final de la subcadena.
* Si se proporciona n_largo positivo, la subcadena contendrA como mAximo ese nUmero de caracteres desde n_inicio
* Si se proporciona n_largo negativo, primero se calcula la subcadena y luego se resta a la subcadena n_largo caracteres
<?php
echo "<pre>";
$cadena = "123456789";
$trozo = substr($cadena, 0);
echo $trozo."\n"; // 123456789
$trozo = substr($cadena, 3);
echo $trozo."\n"; // 456789
$trozo = substr($cadena, -3);
echo $trozo."\n"; // 789
$trozo = substr($cadena, 3,3);
echo $trozo."\n"; // 456
$trozo = substr($cadena, 2,-3);
echo $trozo."\n"; // 3456
$trozo = substr($cadena, -6,-5);
echo $trozo."\n"; // 4
echo "</pre>";
?>
===================================================================================
Por Ultimo, con strpos localizamos el inicio de una subcadena dentro de una cadena:
===================================================================================
<?php
echo "<pre>";
$cadena = "blah@imaginary.com";
$subcadena = "@";
$inicio_dominio = strpos ($cadena, $subcadena);
echo $inicio_dominio; // 4
echo "<br>";
$dominio = substr ($cadena, ($inicio_dominio+1));
echo $dominio; // imaginary.com
echo "</pre>";
?>
===================================================================================
Cadenas tratadas como arrays
===================================================================================
Una caracterIstica interesante es que las cadenas pueden ser consideradas automAticamente como arrays,
y por lo tanto es una forma mas de acceder fAcilmente a un carActer determinado, o de manipular la cadena:
<?php
$cadena = "hola";
echo $cadena[0]; // imprime h
?>