Cómo recortar cadenas en PHP
Spanish (Español) translation by Ana Paulina Figueroa (you can also view the original English article)
Hay muchas ocasiones en las que queremos trabajar con cadenas, pero estas se encuentran rellenas con caracteres no deseados ya sea al principio o al final. PHP ha definido funciones específicas que podemos usar para recortar ese tipo de cadenas fácilmente.
En este consejo rápido, discutiremos dos situaciones comunes relacionadas con el recorte de cadenas que probablemente encontrarás. La primera tiene que ver con la eliminación de caracteres específicos de uno o ambos extremos de una cadena. La segunda involucra el recorte de cadenas en función de la cantidad de caracteres que queramos eliminar de cada extremo.
Recorte de cadenas para eliminar un conjunto de caracteres
Existen tres funciones de recorte diferentes en PHP, llamadas ltrim(), rtrim() y trim(). Estas eliminan espacios en blanco o cualquier otro conjunto de caracteres del extremo izquierdo, del extremo derecho o de ambos extremos, respectivamente.
Si no mencionas una lista de caracteres a eliminar como segundo parámetro, estas funciones eliminarán caracteres de espacios en blanco como los espacios (" "), tabulaciones ("\t"), líneas nuevas ("\n"), retornos de carro ("\r"), bytes nulos ("\0") y tabulaciones verticales ("\v").
No hay límite en cuanto a la cantidad de caracteres que serán recortados por estas funciones. En otras palabras, estas seguirán recortando la cadena siempre que contenga alguno de los caracteres especificados en cualquiera de sus extremos.
A continuación se muestran algunos ejemplos de estas funciones. Las principales cadenas que vamos a recortar contendrán una combinación de espacios en blanco, tabulaciones o caracteres de línea nueva en ambos extremos.
1 |
<?php
|
2 |
|
3 |
$strings = [" Hi, are you alright? ", " |
4 |
I am going for a walk. ", " |
5 |
|
6 |
That was amazing!!!
|
7 |
|
8 |
"]; |
9 |
|
10 |
foreach($strings as $string) { |
11 |
var_dump(ltrim($string)); |
12 |
}
|
13 |
|
14 |
/*
|
15 |
Output from ltrim()
|
16 |
|
17 |
string(25) "Hi, are you alright? "
|
18 |
string(23) "I am going for a walk. "
|
19 |
string(25) "That was amazing!!!
|
20 |
*/
|
21 |
|
22 |
|
23 |
foreach($strings as $string) { |
24 |
var_dump(rtrim($string)); |
25 |
}
|
26 |
|
27 |
/*
|
28 |
Output from rtrim()
|
29 |
|
30 |
string(22) " Hi, are you alright?"
|
31 |
string(25) "
|
32 |
I am going for a walk."
|
33 |
string(24) "
|
34 |
|
35 |
That was amazing!!!"
|
36 |
*/
|
37 |
|
38 |
foreach($strings as $string) { |
39 |
var_dump(trim($string)); |
40 |
}
|
41 |
|
42 |
/*
|
43 |
Output from trim()
|
44 |
|
45 |
string(20) "Hi, are you alright?"
|
46 |
string(22) "I am going for a walk."
|
47 |
string(19) "That was amazing!!!"
|
48 |
*/
|
49 |
?>
|
Como puedes ver, ltrim() elimina todos los espacios en blanco del lado izquierdo de las cadenas, manteniendo intacto el extremo derecho. De manera similar, rtrim() elimina todos los espacios en blanco del lado derecho de las cadenas, manteniendo intacto el extremo izquierdo.
Es importante tener en cuenta que el recorte solo ocurre cuando los caracteres se encuentran exactamente al principio o al final. A continuación se muestra un ejemplo:
1 |
<?php
|
2 |
|
3 |
$string = "I am |
4 |
doing very good!
|
5 |
|
6 |
How are you?
|
7 |
|
8 |
"; |
9 |
|
10 |
var_dump(trim($string)); |
11 |
|
12 |
/*
|
13 |
|
14 |
string(51) "I am
|
15 |
doing very good!
|
16 |
|
17 |
How are you?"
|
18 |
|
19 |
*/
|
20 |
|
21 |
?>
|
También puedes recortar cualquier otro conjunto de caracteres si envías estos últimos como segundo parámetro de ltrim(), rtrim() o trim().
1 |
<?php
|
2 |
|
3 |
$string = " 123131311211 I am doing very good! How are you? 1231312112 |
4 |
12132321"; |
5 |
|
6 |
var_dump(trim($string, "123")); |
7 |
|
8 |
/*
|
9 |
string(65) " 123131311211 I am doing very good! How are you? 1231312112
|
10 |
|
11 |
"
|
12 |
*/
|
13 |
?>
|
Esta vez especificamos que solo queremos recortar los caracteres 1, 2 y 3. Por lo tanto, trim() ha dejado intacto el espacio en blanco.
1 |
<?php
|
2 |
$string = "12121231409874509121208409812112128311213"; |
3 |
var_dump(trim($string, "123")); |
4 |
|
5 |
/*
|
6 |
string(27) "409874509121208409812112128"
|
7 |
*/
|
8 |
?>
|
De manera similar, en el segundo ejemplo trim dejó de eliminar dígitos de ambos extremos tan pronto como encontró una discrepancia con respecto a los caracteres que le pedimos que recortara.
1 |
<?php
|
2 |
$string = "12121231409874509121208409812112128311213"; |
3 |
var_dump(trim($string, "1..9")); |
4 |
|
5 |
/*
|
6 |
string(16) "0987450912120840"
|
7 |
*/
|
8 |
?>
|
Este tercer ejemplo demuestra cómo podemos usar (..) para especificar un rango de caracteres que queramos recortar. De esta manera podemos evitar enumerar todos los caracteres si estos ocurren secuencialmente.
Recorte de cadenas para eliminar una cantidad específica de caracteres
Al igual que para recortar un conjunto específico de caracteres, PHP también tiene funciones dedicadas para recortar una cantidad específica de caracteres.
La función substr($string, $offset, $length) es la más adecuada para hacer este trabajo. Esta acepta tres parámetros y devuelve una subcadena. El primer parámetro es la cadena que quieres recortar. El parámetro $offset determina el inicio de la subcadena devuelta, y el parámetro $length determina la longitud de la subcadena.
Podemos controlar los valores de $offset y $length para recortar nuestra cadena principal en función de la cantidad de caracteres.
- Puedes recortar la cadena del lado izquierdo tan solo especificando un valor de desplazamiento (parámetro offset) y omitiendo el parámetro
$lengthal llamar asubstr(). En este caso,substr()devolverá una subcadena comenzando a partir del valor de desplazamiento y hasta el final de la cadena. - Puedes recortar la cadena desde el lado derecho estableciendo el valor de
$offseten 0 y haciendo que$lengthsea negativo. Esto eliminará una cantidad de caracteres equivalente al valor de$lengthdel extremo derecho de la cadena principal. - Puedes especificar un valor positivo distinto de cero para
$offsety un valor negativo para$lengthpara hacer quesubstr()actúe comotrim()y elimine una cantidad específica de caracteres de ambos extremos.
A continuación puedes ver un ejemplo que recorta una cadena usando la función substr():
1 |
<?php
|
2 |
|
3 |
$string = "I will try to trim this sentence in different ways."; |
4 |
|
5 |
var_dump(substr($string, 10)); |
6 |
// string(41) " to trim this sentence in different ways."
|
7 |
|
8 |
var_dump(substr($string, -10)); |
9 |
// string(41) "I will try to trim this sentence in diffe"
|
10 |
|
11 |
var_dump(substr($string, 10, -10)); |
12 |
// string(31) " to trim this sentence in diffe"
|
13 |
|
14 |
?>
|
Pensamientos finales
En este consejos rápido, aprendimos cómo recortar cadenas en PHP en base a un conjunto específico o a una cantidad específica de caracteres. Si tienes alguna pregunta o sugerencia relacionada con la publicación, no dudes en publicarla en los comentarios.
Aprende PHP con un curso gratuito en línea
Si quieres aprender PHP, ¡consulta nuestro curso gratuito en línea sobre los fundamentos de PHP!
En este curso, aprenderás los fundamentos de la programación en PHP. Comenzarás con los conceptos básicos, aprendiendo cómo funciona PHP y escribiendo bucles y funciones simples en él. Luego avanzarás a la codificación de clases para una programación orientada a objetos (POO) sencilla. En el camino, aprenderás las habilidades más importantes para escribir aplicaciones para la web: tendrás la oportunidad de practicar la respuesta a las solicitudes GET y POST, analizar JSON, autenticar usuarios y usar una base de datos MySQL.





