W3docs

explode()

La función explode() divide una cadena en un array de subcadenas. La sintaxis de explode() es la siguiente:

La función explode() divide una cadena en un array de subcadenas, separándola en cada punto donde aparece un delimitador elegido. Es la forma estándar en PHP de convertir texto delimitado —una fila CSV, una fecha, una lista de etiquetas separadas por comas— en datos sobre los que puedes iterar. Es la función inversa de implode(), que une un array de nuevo en una cadena.

Esta página cubre la sintaxis, el parámetro opcional $limit (incluidos los valores negativos), el valor de retorno, los patrones de análisis más comunes y los errores típicos que suelen cometerse.

Sintaxis

explode(string $separator, string $string, int $limit = PHP_INT_MAX): array
ParámetroObligatorioDescripción
$separatorLa cadena delimitadora sobre la que se divide. Se interpreta de forma literal, no como expresión regular.
$stringLa cadena de entrada que se va a dividir.
$limitnoControla cuántas partes se devuelven (véase más abajo). Por defecto es PHP_INT_MAX.

La función devuelve un array de strings. Si $separator es una cadena vacía (""), explode() lanza un ValueError (en PHP 8+; en versiones anteriores devolvía false). Si el separador no aparece en la cadena, el resultado es un array de un solo elemento que contiene la cadena original completa.

Ejemplo básico

php— editable, runs on the server

Definimos el delimitador ,, llamamos a explode() y mostramos el array resultante con print_r(). Cada elemento es todo lo que hay entre dos delimitadores.

La salida de este código será:

Array
(
    [0] => Hello
    [1] => World!
)

Limitar el número de partes

El parámetro opcional $limit cambia la forma en que se divide la cadena:

  • Límite positivo — el array contiene como máximo ese número de elementos; el último elemento guarda el resto de la cadena sin dividir.
  • Cero — se trata como 1, por lo que la cadena completa se devuelve como un único elemento.
  • Límite negativo — se devuelven todas las partes excepto las últimas |limit|.

Límite positivo

php— editable, runs on the server

Con un límite de 3, la cadena se divide en como máximo tres elementos. Observa que el último elemento conserva el resto de la cadena sin dividir —three,four,five— en lugar de descartarlo.

La salida de este código será:

Array
(
    [0] => one
    [1] => two
    [2] => three,four,five
)

Esto es útil cuando solo te interesan los primeros campos; por ejemplo, explode(' ', $logLine, 2) para separar una marca de tiempo del resto de un mensaje de registro.

Límite negativo

Un límite negativo elimina elementos del final del resultado:

<?php
$string = "one,two,three,four,five";
print_r(explode(",", $string, -2));
?>

Las dos últimas partes (four y five) se eliminan:

Array
(
    [0] => one
    [1] => two
    [2] => three
)

Patrones de análisis habituales

Un uso típico en el mundo real es leer un registro delimitado y limpiar los espacios de cada campo:

<?php
$csvRow = "Jane , Doe ,  [email protected] ";
$fields = array_map('trim', explode(",", $csvRow));
print_r($fields);
?>

La salida son valores limpios, sin espacios en blanco:

Array
(
    [0] => Jane
    [1] => Doe
    [2] => [email protected]
)

explode() también funciona de forma natural con la desestructuración de list() para extraer partes con nombre de una cadena:

<?php
$date = "2026-06-21";
[$year, $month, $day] = explode("-", $date);
echo "Year: $year, Month: $month, Day: $day";
?>

Salida:

Year: 2026, Month: 06, Day: 21

Errores comunes

  • El separador es literal, no una expresión regular. explode("-", ...) divide en un guión, nunca en un patrón. Si necesitas una expresión regular (por ejemplo, dividir en cualquier secuencia de espacios en blanco), usa preg_split() en su lugar.
  • No puedes dividir en caracteres individuales con explode(). Un separador vacío genera un ValueError. Para dividir una cadena en caracteres individuales, usa str_split().
  • Varios delimitadores consecutivos crean elementos vacíos. explode(",", "a,,b") devuelve ["a", "", "b"]. Fíltralos con array_filter() si no los quieres.
  • ¿No se encuentra el separador? Igualmente obtienes un array válido —un array de un solo elemento con la cadena completa— por lo que puedes acceder de forma segura a [0].

Funciones relacionadas

  • implode() / join() — la inversa: une un array en una cadena.
  • str_split() — divide una cadena en fragmentos de longitud fija (o en caracteres).
  • preg_split() — divide usando una expresión regular.
  • substr() — extrae una parte de una cadena por posición.
  • trim() — elimina los espacios en blanco de cada parte después de dividir.

Práctica

Práctica
¿Cuál es la funcionalidad de la función 'explode' en PHP?
¿Cuál es la funcionalidad de la función 'explode' en PHP?
Was this page helpful?