explode()
A função explode() divide uma string em um array de substrings. Veja a sintaxe, o parâmetro $limit e exemplos práticos de uso.
A função explode() divide uma string em um array de substrings, quebrando-a sempre que um delimitador escolhido aparece. É a forma padrão em PHP de transformar texto delimitado — uma linha CSV, uma data, uma lista de tags separadas por vírgula — em dados que podem ser percorridos em um loop. É o inverso de implode(), que une um array de volta em uma string.
Esta página aborda a sintaxe, o parâmetro opcional $limit (incluindo valores negativos), o valor de retorno, padrões comuns de análise e as armadilhas que costumam pegar as pessoas de surpresa.
Sintaxe
explode(string $separator, string $string, int $limit = PHP_INT_MAX): array| Parâmetro | Obrigatório | Descrição |
|---|---|---|
$separator | sim | A string delimitadora usada para dividir. É correspondida literalmente, não como expressão regular. |
$string | sim | A string de entrada a ser dividida. |
$limit | não | Controla quantas partes são retornadas (veja abaixo). O padrão é PHP_INT_MAX. |
A função retorna um array de strings. Se $separator for uma string vazia (""), explode() lança um ValueError (no PHP 8+; em versões anteriores retornava false). Se o separador nunca aparecer na string, o resultado é um array com um único elemento contendo a string original inteira.
Exemplo básico
Definimos o delimitador ,, chamamos explode() e exibimos o array resultante com print_r(). Cada elemento é tudo que está entre dois delimitadores.
A saída deste código será:
Array
(
[0] => Hello
[1] => World!
)Limitando o número de partes
O parâmetro opcional $limit altera a forma como a string é dividida:
- Limite positivo — o array contém no máximo esse número de elementos; o último elemento guarda o restante não dividido da string.
- Zero — tratado como
1, de modo que a string inteira é retornada como um único elemento. - Limite negativo — todas as partes são retornadas exceto as últimas
|limit|delas.
Limite positivo
Com um limite de 3, a string é dividida em no máximo três elementos. Observe que o último elemento mantém o restante da string sem dividir — three,four,five — em vez de ser descartado.
A saída deste código será:
Array
(
[0] => one
[1] => two
[2] => three,four,five
)Isso é útil quando você só precisa dos primeiros campos, por exemplo explode(' ', $logLine, 2) para separar um timestamp do restante de uma mensagem de log.
Limite negativo
Um limite negativo remove elementos do final do resultado:
<?php
$string = "one,two,three,four,five";
print_r(explode(",", $string, -2));
?>As duas últimas partes (four e five) são removidas:
Array
(
[0] => one
[1] => two
[2] => three
)Padrões comuns de análise
Um uso típico no mundo real é ler um registro delimitado e aparar cada campo:
<?php
$csvRow = "Jane , Doe , [email protected] ";
$fields = array_map('trim', explode(",", $csvRow));
print_r($fields);
?>A saída são valores limpos, sem espaços em branco:
Array
(
[0] => Jane
[1] => Doe
[2] => [email protected]
)explode() também se combina naturalmente com a desestruturação list() para extrair partes nomeadas de uma string:
<?php
$date = "2026-06-21";
[$year, $month, $day] = explode("-", $date);
echo "Year: $year, Month: $month, Day: $day";
?>Saída:
Year: 2026, Month: 06, Day: 21Armadilhas
- O separador é literal, não uma regex.
explode("-", ...)divide no hífen, nunca em um padrão. Se você precisar de uma expressão regular (por exemplo, dividir em qualquer sequência de espaço em branco), usepreg_split(). - Você não pode dividir em caracteres individuais com
explode(). Um separador vazio lança umValueError. Para dividir uma string em caracteres únicos, usestr_split(). - Múltiplos delimitadores adjacentes criam elementos vazios.
explode(",", "a,,b")retorna["a", "", "b"]. Filtre-os comarray_filter()se não quiser mantê-los. - Separador não encontrado? Você ainda obtém um array válido — um array de um único elemento contendo a string inteira — então pode indexar com segurança em
[0].
Funções relacionadas
implode()/join()— o inverso: une um array em uma string.str_split()— divide uma string em partes de comprimento fixo (ou caracteres).preg_split()— divide usando uma expressão regular.substr()— extrai parte de uma string por posição.trim()— remove espaços em branco de cada parte após o explode.