Cómo manipular texto en PHP con estas 9 funciones

Las cadenas son uno de los tipos escalares fundamentales en muchos lenguajes de programación, incluido PHP. Representan datos de texto, desde caracteres individuales hasta documentos completos.

La programación de cadenas más simple implica texto de un solo byte, que puede representar 256 caracteres diferentes. ASCII es la codificación más común. El lenguaje PHP central tiene muchas funciones útiles para manipular tales cadenas.

Cómo mostrar el contenido de una cadena

Si ha realizado alguna programación en PHP, probablemente se haya encontrado con echo , pero es posible que no se dé cuenta de que en realidad no es una función en absoluto. De hecho, echo es una construcción del lenguaje, por lo que incluso si lo usa más que cualquier función de cadena real, no siempre puede usarlo en lugar de una función.

Casi siempre lo usará así:

 echo "Hello, world";

Pero en realidad puedes llamarlo como una función:

 echo("Hello, world");

Aunque lo parece, esto todavía no es una llamada a función. Por ejemplo, no puede asignar su valor de retorno a una variable:

 $a = echo("Hello, world");
Parse error: syntax error, unexpected 'echo' (T_ECHO)

Otra forma de generar el valor de una cadena es utilizando print. Nuevamente, esta no es realmente una función verdadera, aunque está más cerca de una que de echo. Como echo, puedes llamarlo sin paréntesis:

 print "Hello, world";

Pero, a diferencia de echo, devuelve un valor que puede asignar, aunque ese valor siempre es 1:

 $a = print("Hello, world");
echo $a; // 1

1. Generación de una cadena mediante una función real

La función printf es en realidad una función real. Al igual que echo e print , genera cadenas, pero tiene un comportamiento único que refleja la misma función del lenguaje c:

 $username = "John";
$length = printf("Hello, %s", $username); // "Hello, John"
echo $length; // 11

El primer argumento sigue siendo una cadena, entre comillas dobles. Pero printf realizará varios reemplazos en secuencias de caracteres especiales dentro de la cadena. Estas secuencias comienzan con un símbolo de porcentaje, como el anterior, % s . En este caso específico,% s representa una cadena y printf la reemplaza con el siguiente argumento, que es el valor de $ username .

La función printf devuelve un valor útil, la longitud de la cadena formateada. Esto puede ser útil para el código que no puede conocer la longitud de antemano, al pasar variables a printf , por ejemplo. Puede usar ese valor de retorno para determinar cuánto espacio físico ocupará la cadena en una línea de comando.

2. Obtener la longitud de una cuerda

Hablando de la longitud de una cuerda, la forma estándar de determinar la longitud de una cuerda es la función strlen . Esta función es muy sencilla: toma un solo argumento de cadena y devuelve el número de bytes como un entero. Como se mencionó anteriormente, para el texto ASCII , el número de bytes es el mismo que el número de caracteres:

 $length = strlen("Hello, World");
echo $length; // 12

3. Extraer parte de una cadena

Una tarea muy común, cuando se trata de cadenas, es la extracción de parte de esa cadena. Hay varias formas de hacer esto, y la primera presentada aquí especifica la posición y la longitud de la subcadena requerida. La función substr extrae una parte fija de una cadena de acuerdo con estos parámetros.

 $greeting = substr("Hello, World", 0, 5);
echo $greeting; // "Hello"

Tenga en cuenta que, como en la mayoría de los lenguajes de programación, PHP cuenta las compensaciones de cadenas desde 0. PHP se diferencia de algunos lenguajes en que el segundo parámetro de esta función es la longitud de la cadena resultante.

Relacionado: Los peores y más difíciles lenguajes de programación

Otra diferencia es que PHP admite valores negativos tanto para el desplazamiento como para la longitud. Si el desplazamiento es negativo, el resultado comenzará a contar desde el final de la cadena, no desde el inicio:

 $greeting = substr("Hello, World", -5, 5);
echo $greeting; // "World"

Si la longitud es negativa, se referirá al número de caracteres eliminados, en lugar del número incluido:

 $greeting = substr("Hello, World", 0, -6);
echo $greeting; // "Hello,"

4. Búsqueda dentro de una cadena

Una parte importante del procesamiento de texto implica encontrar la ubicación de una cadena dentro de otra. En PHP, puede lograr esto con la función strpos :

 $pos = strpos("Hello, World", ",");
echo $pos; // 5

Puede usar strpos junto con substr para proporcionar un método de propósito más general para extraer parte de una cadena:

 $string = "Hello, World";
$pos = strpos($string, ",");
$first_part = substr($string, 0, $pos);
echo $first_part; // "Hello"

5. Conversión de la caja de una cadena

Las cadenas ASCII tradicionales tienen variantes en mayúsculas y minúsculas bien definidas. La versión en mayúscula de a es A. La minúscula de Z es z. Las funciones strtoupper y strtolower realizan estas conversiones. Lo hacen para cada carácter en una cadena ASCII:

 $original = "hello, WORLD";
$upper = strtoupper($original);
$lower = strtolower($original);
echo "$lower $upper"; // "hello, world HELLO, WORLD"

6. Eliminación de espacios en blanco

A veces, terminará con una cadena que tiene espacios en blanco iniciales o finales: espacios, tabulaciones o caracteres de nueva línea. Esto a menudo no es deseado, pero el recorte puede eliminarlo:

 $trimmed = trim(" Hello, World ");
echo $trimmed; // "Hello, World"

7. Rompiendo una cuerda con un separador

La función de explosión suena peligrosa, pero no se preocupe, ¡no causa ningún daño duradero! En cambio, convierte una cadena en una matriz de cadenas, separadas por otra cadena, a menudo un carácter. Puede ser útil si desea dividir una oración en palabras separadas, por ejemplo.

 $sentence = "The quick brown fox jumps over the lazy dog";
$words = explode(" ", $sentence);

La variable $ palabras ahora es una matriz que contiene palabras individuales:

 [ "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog" ]

8. División de una cadena en subcadenas de longitud fija

Como explotar , la función str_split divide una cadena en una matriz de cadenas más pequeñas. A diferencia de explotar, las cadenas finales no están determinadas por su contenido, sino por su longitud.

 $parts = str_split("Hello, World", 6);

La matriz $ parts ahora contiene dos subcadenas, cada una de seis caracteres de longitud:

 [ "Hello,", " World" ]

9. Buscar y reemplazar dentro de una cadena

Puede realizar una operación simple de búsqueda y reemplazo en una cadena usando str_replace . Se necesitan tres argumentos: una cadena para buscar, una cadena de reemplazo y una cadena original para buscar. La función devuelve la nueva cadena:

 $result = str_replace("o", "OO", "Hello, World");
echo $result; // "HellOO, WOOrld"

PHP proporciona muchas formas útiles de trabajar con texto

Dado que PHP se usa a menudo en el desarrollo web, tratar con texto es una tarea común.

Las funciones que se presentan aquí se encuentran entre las más útiles para procesar texto usando PHP. Hay alrededor de cien funciones de manejo de cadenas integradas en el propio lenguaje.

Recuerde que las funciones que se muestran aquí son para usar con cadenas ASCII, no Unicode. PHP también tiene soporte para Unicode y otros esquemas de codificación de caracteres multibyte, con un conjunto separado de funciones .