Cortar una cadena en PHP
En este post te mostraré a usar la función substr
para cortar una cadena en PHP (también conocido como cortar una palabra o cortar un string) desde un inicio hasta un fin.
También vamos a ver cómo cortar una cadena desde determinado carácter, es decir, eliminar lo que esté más allá de determinada letra.
Sintaxis de substr
La sintaxis es:
$cadenaCortada = substr($cadena, $inicio, $longitud);
Los argumentos son:
$cadena
: la cadena que se va a cortar$inicio
: el índice desde donde se comienza a cortar la cadena$longitud
: opcional. Cuántos caracteres tomar desde$inicio
.
Ejemplo de substr
Comencemos con un ejemplo sencillo. Vamos a cortar una palabra desde 0 hasta 12. Es decir, tomaremos 12 caracteres en total.
<?php
/*
Cortar cadenas en PHP
@author parzibyte
https://parzibyte.me/blog
*/
$cadena = "Hola, mundo. Programando en PHP desde parzibyte.me";
$cortada = substr($cadena, 0, 12);
echo "Cortada: $cortada";
#Salida: Cortada: Hola, mundo.
Como ves, cortamos la string y ahora el resultado es “Hola, mundo.”
Cuando el inicio no es 0
Hay que tener cuidado cuando cortamos una cadena y no es a partir del 0, pues puede haber resultados inesperados ya que recuerda que el tercer argumento es la longitud o cantidad que queremos cortar, no el fin.
Por ejemplo, siguiendo el código anterior, si solo se deseara obtener “mundo” se haría lo siguiente:
<?php
/*
Cortar cadenas en PHP
@author parzibyte
https://parzibyte.me/blog
*/
$cadena = "Hola, mundo. Programando en PHP desde parzibyte.me";
$cortada = substr($cadena, 6, 5);
echo "Cortada: $cortada";
#Salida: Cortada: mundo
Ahora se corta desde la posición 6 y se toman 5 caracteres.
Cortar cadena en PHP dependiendo de caracter
Un uso que encontré para la función substr
fue cuando estaba mejorando mi caja de herramientas con PHP y quería capturar las variables GET al usar Phroute.
Para no confundir al lector, tenía esta cadena:
http://localhost/plantilla-php/usuarios?token=asdfg123
Y quería quitar todo lo que estuviera más allá del signo de interrogación (?
). Así que hice esto:
<?php
/*
Cortar cadenas en PHP
@author parzibyte
https://parzibyte.me/blog
*/
$uri = "http://localhost/plantilla-php/usuarios?token=asdfg123";
echo "uri antes: $uri";
$posicionSignoDeInterrogacion = strpos($uri, "?");
if ($posicionSignoDeInterrogacion !== false) {
$uri = substr($uri, 0, $posicionSignoDeInterrogacion);
}
echo "\n\nuri después: $uri";
/*
Salida:
uri antes: http://localhost/plantilla-php/usuarios?token=asdfg123
uri después: http://localhost/plantilla-php/usuarios
*/
Con strpos obtuve la posición del signo de interrogación, esta función devuelve false
si no lo encuentra y por eso está el if
(ya que no todas las cadenas traían el símbolo)
A partir del signo de interrogación corté la cadena desde 0 hasta la posición del símbolo, resultando en una cadena cortada con PHP.