Home | Clases | Programación en PHP | Strings

Strings


Introducción

El manejo de strings es otro de los pilares de la programación en PHP, y si bien existen infinidad de funciones para trabajar con ellas que se pueden consultar en la programación oficial, aquí solo veremos las más utilizadas.

Los strings se pueden definir de diferentes maneras, si bien las más común es la de encerrar lo entre comillas (simples o dobles). En principio, ambas formas están aceptadas, aunque se establece una pequeña clasificación:

  • usaremos comillas simples para strings "tal cual."
  • usaremos comillas dobles si vamos a utilizar caracteres de escape o control interpolar variables, etc.


echo "\x2a"; //muestra un asterisco utilizando notación hexadecimal

$quien = "Jairo";
echo "Hola $quien\n"; //muestra Hola Jairo y cambia de línea
echo 'Hola $quien\n'; //muestra Hola Jairo\n

echo 'Mi nombre es \'Jairo\'.'; //Muestra Mi nombre es 'Jairo'.
$quien = "Jairo";
echo "El valor de la variable \$quien es \"$quien\"."; //Muestra El valor de la variable $quien es "Jairo".


Para conocer la longitud de un string utilizamos la función strlen(), que devuelve la longitud en bytes del string, lo que implica que todos los caracteres cuentan, independientemente de su valor.


echo strlen("Jairo"); //devuelve 5
echo strlen("Jairo García"); //devuelve 12


La función strtr() permite transformar un string, sustituyendo unos caracteres por otros predefinidos:


echo strtr('Jairo', 'i', '1'); //devuelve Ja1ro
$numeros = ['i' => '1', 'o' => '0'];
echo strtr("Jairo", $numeros); //devuelve Ja1r0


Por último, es posible utilizar un string como si fuera un array en el que cada caracter es un elemento del mismo


$quien = 'Jairo';
echo $quien[1]; //devuelve a
for ($i=0; $i < strlen($quien); $i++){
echo $quien[$i]."-"; //devuelve J-a-i-r-o-
}


Comparar strings

En ocasiones necesitaremos comparar strings para realizar ciertas operaciones, si bien hay que tener cuidado con las conversiones internas entre datos de PHP. Así, el siguiente ejemplo devolverá true, ya que internamente el string se convertirá al entero 123 antes de la comparación. Esto se podría haber evitado si hubiéramos utilizado el comparador idéntico ===:


$string = '123abc';
echo ($string == 123); //devuelve true
echo ($string === 123); //devuelve false


No obstante, existen funciones específicas de PHP para realizar las comparaciones y cuyo valor devuelto será 0 si las cadenas son consideradas iguales. Estas funciones son:

strcmp(), que compara dos strings tal cual, como si utilizáramos el operador idéntico
strcasecmp(), que funciona como la anterior, pero es insensible a mayúsculas y minúsculas. Muy útil para campos de captcha, email, etc.
strncmp() y strncasecmp(), que permiten comparar solo una cantidad definida de caracteres (en el segundo caso de manera insensible a mayúsculas y minúsculas). Una función similar a esta sería substr_compare()


$string = 'Hola Jairo';
echo strcmp($string, 'Hola jairo'); //devuelve -32, implica que no son iguales
echo strcasecmp($string, 'Hola jairo'); //devuelve 0, implica que son iguales porque es insensible a mayúsculas y minúsculas
echo strncmp($string, 'Hola Luís', 5); //devuelve 0, implica que son iguales porque solo comparo los 5 primeros caracteres


Buscar y reemplazar strings

Existen diferentes funciones para realizar búsquedas y reemplazos en strings PHP, si bien hay que tener en cuenta que cuanto más complicada sea la función, más tiempo de ejecución necesitará, pudiendo ralentizar los procesos considerablemente, sobre todo en búsquedas masivas.

La forma más sencilla de buscar en un string es con la función strpos(), que busca nuestra "aguja" o porción deseada en el "pajar" o cadena completa y devuelve la posición de la primera ocurrencia. Es importante, al realizar las comparaciones, recordar usar el operador idéntico, para no confundir la primera posición del string 0 con false. También se puede invocar de manera opcional un tercer parámetro para indicar desde qué posicion del string se quiere empezar a buscar:


$haystack = 'Hola Jairo'; //pajar
$needle = 'a'; //aguja

if (strpos($haystack, $needle) !== false){
echo "Texto encontrado en la posición ":strpos($haystack, $needle);
}
else{
echo "Texto no encontrado"
}

echo strpos($haystack, $needle); //devuelve 3, que es donde empieza el texto 'a'
echo strpos($haystack, $needle, 4); //devuelve 6 porque después de la primera 'a', la siguiente está en la posición 6
echo strpos($haystack, $needle, 7); //devuelve false (nada en pantalla) porque después de la segunda 'a' ya no hay más ocurrencias


Una variante de esta función es strstr(), que funciona de manera similar pero devolviendo la porción del string desde la porción buscada:


$haystack = 'Hola Jairo'; //pajar
$needle = 'la'; //aguja

echo strstr($haystack, $needle); //devuelve 'a Jairo'


En general, strstr() es más lenta que strpos(), con lo que si no necesitamos la porción del string, es mejor utilizar strpos().

Además y al igual que antes, existen funciones similares a strpos() y strstr() pero que son insensibles a mayúsculas y minúsculas. Estas son, respectivamente, stripos() y stristr().

También es posible indicar a PHP que empiece a buscar desde el final del string en lugar de hacerlo desde el principio, para ello hay que utilizar la función strrpos().


echo stripos('Hola Jairo', 'hola'); //devuelve 0, que es donde empieza la aguja
echo stristr('Hola Jairo', 'j'); //devuelve 'Jairo', que es donde empieza la aguja
echo strrpos('Hola Jairo', 'a'); //devuelve 6, que es la posición de la primera ocurrencia empezando desde el final


La función más simple para buscar y reemplazar en un string es str_replace(), así como su variante insensible a mayúsculas y minúsculas str_ireplace(), bien pasando strings sencillos de búsqueda y reemplazo o arrays de strings para realizar varios reemplazos simultáneos. Además, es posible añadir un cuarto parámetro que nos da la cantidad de reemplazos efectuados:


$subject = 'Hola Mundo'; //cadena completa
$search = 'Mundo'; //cadena de búsqueda
$replace = 'Jairo'; //cadena de reemplazo
echo str_replace($search, $replace, $subject); //devuelve 'Hola Jairo'

$subject = 'Hola Mundo'; //cadena completa
$search = ['Hola', 'Mundo']; //array de búsqueda
$replace = ['Hello', 'World']; //array de reemplazo
echo str_replace($search, $replace, $subject); //devuelve 'Hello World'

$reemplazos = 0;
str_replace($search, $replace, $subject, $reemplazos);
echo $reemplazos; //devuelve 2, que es el número de reemplazos afectuados


Y como avanzamos antes, es posible utilizar la función susbtr_replace() combinándola con strpos() para reemplazar parte de una aguja que encontremos a partir de una determinada ocurrencia, por ejemplo:


echo substr_replace("Hola Mundo", "Jairo", 5); //Devuelve 'Hola Jairo'

$email = 'jairo@garciarincon.com';
$nombre = substr_replace($email, "", strpos($email, '@'));
echo "Hola $nombre";


Para terminar, existe una función, llamada substr(), que permite extraer parte de un string, algo realmente útil y necesario en muchas situaciones. Funciona con tres parámetros: el string de entrada, la posición desde el inicio (o desde el fin si es un número negativo) y, de manera opcional, la longitud:


$x = '1234567'

echo substr($x, 0, 3); //devuelve '123'
echo substr($x, 1, 1); //devuelve '2'
echo substr($x, -2); //devuelve '67'
echo substr($x, 1); //devuelve '234567'
echo substr($x, -2, 1); //devuelve '6'


Otras funciones

Además de las citadas anteriormente, existen muchas más funciones en PHP para trabajar con strings. Todas ellas están disponibles en la documentación oficial de PHP y muchas de ellas serán necesarias para resolver los ejercicios planteados a continuación.


Ejercicios propuestos

  • Muestra por pantalla el texto: El comando c:\*.* no es correcto y en mi reloj son la 12 "o'clock".
  • Escribe tu nombre completo y dos apellidos en una línea. En la siguiente, sustituye las vocales e,i,o por los números 3,1,0, respectivamente. Si hay alguna 's', sustitúyela por el número '5'.
  • Escribe tu nombre completo y dos apellidos en una línea. En la siguiente, sustituye todas tildes y diéresis (si las hay) por su correspondiente vocal sin tilde ni diéresis. Si alguna 'ñ', sustitúyela por una 'n'.
  • Escribe una función que transforme una frase a mayúsculas
  • Escribe una función que transforme una frase a minúsculas
  • a. Escribe una función que transforme la primera letra de una frase a mayúsculas. b. Modifica la anterior para que transforme la primera letra de la frase a minúsculas
  • Escribe una función que transforme la primera letra de cada palabra de una frase a mayúsculas
  • Escribe una función que convierta el string 15061974 en 15/06/1974
  • Escribe una función que extraiga el nombre del fichero de una ruta (Ejemplo, 'http://www.jairogarciarincon.com/carpeta1/index.php' debe devolver 'index.php'.
  • Escribe una función que extraiga el nombre de usuario de una dirección de email (Ejemplo jairo@garciarincon.com debe devolver jairo)
  • Escribe una función que devuelva la letra o número siguiente al introducido (Ejemplo, si la muestra es 'a', debe devolver 'b'. Si la muestra es '4', debe devolver '5').
  • Escribe una función que devuelva la primera palabra de una frase.



Fecha de publicación: 06/09/2019
Asignaturas: desarrollo web en entorno servidor
Temas: php variables bucles arrays
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos