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 ?>