007 Más Strings
Ya hemos tratado los fundamentos de los strings en el capítulo 006d Tipos de datos: Strings. Sin embargo, hay mucho más que se puede hacer con strings y su manipulación.
PHP tiene muchas funciones relacionadas con strings. Revisaremos algunas de esas funciones aquí para entender algo de lo que está disponible. Estas no son necesariamente las mejores funciones ni las funciones más usadas. Estas son solo algunas para dar una idea de que está disponible y como funcionan.
echo()
La función echo() muestra un string a la pantalla. Ya hemos introducido esta función en el capítulo 003 Hola mundo.
explode() e implode()
La función explode() dividirá un string por un string a un array. E implode() toma un array y lo convierte en un string. Estas funciones pueden ser convenientes debido a que muchos datos vienen en forma de un string largo dividido en substrings convenientes.
<?php
// explode(separador, string_para_explode, limite_opcional)
$explotado = explode(" ", "Este es un string.");
print_r($exploded);
// Output:
// Array
// (
// [0] => Este
// [1] => es
// [2] => un
// [3] => string.
// )
// implode(separador, array)
$implotado = implode(" ", $explotado);
echo $implotado;
// Output:
// Este es un string.
htmlspecialchars()
La función htmlspecialchars() convertirá caracteres especiales a entidades html. Esto es útil cuando necesita limpiar la entrada del usuario. Puede ser una parte importante de la seguridad de su código.
Necesitará hacer mucho más para estar realmente seguro, pero puede formar una parte de su enfoque en seguridad.
<?php
// htmlspecialchars(string, flags_opcionales, encoding_optional, double_encoding_opcional)
$salida = htmlspecialchars("<a href='prueba'>Prueba</a>", ENT_QUOTES);
echo $salida; // <a href='prueba'>Prueba</a>
ord() and chr()
La función ord() convertirá el primer byte de un string a un valor entre 0 y 255. La función chr() hará el inverso. Estas funciones pueden ser útiles cuando tiene una situación en que necesita que un carácter sea un valor numérico.
<?php
// ord(cáracter)
$car = ord("A");
echo $car; // 65
// chr(c)
$num = chr($car);
echo $num; // "A"
sprintf()
La función sprintf() regresa un string formateado. Es una función muy flexible que tiene raíces en sprintf() del idioma de programación C. Le permite formatear un string en muchas maneras. Asegúrese revisar la documentación para ver las diferentes opciones disponibles para formatear.
<?php
// sprintf(string_formato, valor1, valor2, ...)
echo sprintf('Hay %d monos en el %s', 5, 'arbol');
// Output:
// Hay 5 monos en el arbol
str_contains() and substr()
La función str_contains() determina si un string contiene un substring. La función substr() regrese una porción de un string. str_contains()
es útil si sólo necesita saber que el substring está allí. substr()
es útil en agarrar una porción de un string cuando sabe dónde dentro del string está ubicado. Anote que la posición empiece desde 0 del lado izquierdo. Si pasa un número negativo, empiece del lado derecho.
<?php
// str_contains(alpaca, aguja)
var_dump(str_contains("Surreal", "real"));
// salida: true
// substr(string, offset, tamaños_opcional)
$salida = substr("Hola, mundo!", 6, 5);
echo $salida; // "mundo"
str_replace()
La función str_replace() reemplaza todas las ocurrencias del string que se busca con otro string. Anote que str_replace()
no cambia el sujeto que pasa a la función. Sólo le da un string nuevo con el reemplazo.
<?php
// str_replace(busca, reemplaza, sujeto, cuenta_opcional)
$sujeto = "Java es lo mejor!";
$salida = str_replace("Java", "PHP", $sujeto);
echo $salida; // "PHP es lo mejor!"
str_split()
La función str_split() convierte un string a un array, en que cada carácter es un elemento en el array, a menos que se especifique lo contrario.
<?php
// str_split(string, largo_opcional)
$string = "Hola!";
$resultado1 = str_split($string);
print_r($resultado1);
// Salida:
// Array
// (
// [0] => H
// [1] => o
// [2] => l
// [3] => a
// [4] => !
// )
$resultado2 = str_split($string, 3);
print_r($resultado2);
// Array
// (
// [0] => Hol
// [1] => a!
// )
strlen()
La función strlen() cuenta el número de caracteres en un string.
<?php
// strlen(string)
echo strlen("Hola!"); // salida: 5
strpos() and stripos()
Ambas funciones strpos() y stripos() encuentren la posición de la primera ocurrencia de un substring en un string. La diferencia es que stripos()
no distingue entre mayúsculas y minúsculas.
<?php
// strpos(alpaca, aguja, offset_opcional)
echo strpos("Hola mundo!", "o"); // 2
echo strpos("Hola mundo!", "O"); // false
// stripos(alpaca, aguja, offset_opcional)
echo stripos("Hola mundo!", "o"); // 2
echo stripos("Hola mundo!", "O"); // 2
strtolower() and strtoupper() and ucfirst() and ucwords()
A veces usted necesita que una letra o letras cambia de mayúscula a minúscula o vice versa. strtolower() cambia todas las letras en un string a minúscula. strtoupper() cambia todas las letras en un string a mayúscula. ucfirst() cambia la primera letra en un string a mayúscula. ucwords() cambia la primera letra de cada palabra en un string a mayúscula.
<?php
// strtolower(string)
echo strtolower("¡Hola! ¿Qué tal ESTÁS?");
// "¡hola! ¿qué tal estás?"
// strtoupper(string)
echo strtoupper("¡Hola! ¿Qué tal ESTÁS?");
// "¡HOLA! ¿QUÉ TAL ESTÁS?"
// ucfirst(string)
echo ucfirst("yo amo a PHP");
// "Yo amo a PHP"
// ucwords(string, optional_separators)
echo ucwords("yo amo a php");
// "Yo Amo A Php"
trim()
La función trim() quitará espacio en blanco desde el principio y el fin del string.
<?php
// trim(string, carácters_opcionales)
echo trim(" Verdadero PHP ");
// "Verdadero PHP"
Recursos
Retos
Valores separados por comas
Utilizando es string "Arriba,Arriba,Abajo,Abajo,Izquierda,Derecha,Izquierda,Derecha":
- Convertirlo a un array en dónde cada palabra es un valor en el array (las comas no formarán parte del array)
- Convertirlo de array a un string, pero cada elemento es separado por un espacio en vez de una coma.
- Hacer que el string sea todo minúsculo.
- Reemplazar cada espacio con un carácter de guión
Su salida final debe de ser:
"arriba-arriba-abjao-abajo-izquierda-derecha-izquierda-derecha"