W3docs

explode()

Функция explode() разбивает строку на массив подстрок по заданному разделителю. Разбор синтаксиса, параметра $limit и примеров.

Функция explode() разбивает строку на массив подстрок, разделяя её в каждом месте, где встречается выбранный разделитель. Это стандартный способ в PHP превратить текст с разделителями — строку CSV, дату, список тегов через запятую — в данные, по которым можно итерироваться. Она является обратной к implode(), которая объединяет массив обратно в строку.

На этой странице рассматриваются синтаксис, необязательный параметр $limit (включая отрицательные значения), возвращаемое значение, типичные шаблоны разбора и подводные камни, на которых часто спотыкаются.

Синтаксис

explode(string $separator, string $string, int $limit = PHP_INT_MAX): array
ПараметрОбязателенОписание
$separatorдаСтрока-граница для разделения. Сопоставляется буквально, а не как регулярное выражение.
$stringдаВходная строка для разбиения.
$limitнетУправляет количеством возвращаемых частей (см. ниже). По умолчанию равен PHP_INT_MAX.

Функция возвращает массив строк. Если $separator — пустая строка (""), explode() выбрасывает ValueError (в PHP 8+; в старых версиях возвращала false). Если разделитель не встречается в строке, результатом будет массив из одного элемента, содержащего всю исходную строку.

Простой пример

php— editable, runs on the server

Мы задаём разделитель ,, вызываем explode() и выводим результирующий массив с помощью print_r(). Каждый элемент — это всё, что находится между двумя разделителями.

Вывод этого кода будет следующим:

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

Ограничение количества частей

Необязательный параметр $limit изменяет способ разбиения строки:

  • Положительный limit — массив содержит не более указанного числа элементов; последний элемент хранит неразбитый остаток строки.
  • Ноль — обрабатывается как 1, то есть вся строка возвращается как один элемент.
  • Отрицательный limit — возвращаются все части, кроме последних |limit| из них.

Положительный limit

php— editable, runs on the server

При значении limit равном 3 строка разбивается не более чем на три элемента. Обратите внимание, что последний элемент сохраняет остаток строки в неразбитом виде — three,four,five — а не отбрасывает его.

Вывод этого кода будет следующим:

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

Это удобно, когда вас интересуют только первые несколько полей, например explode(' ', $logLine, 2) для отделения метки времени от остальной части сообщения лога.

Отрицательный limit

Отрицательный limit отбрасывает элементы с конца результата:

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

Последние две части (four и five) удаляются:

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

Типичные шаблоны разбора

Распространённый реальный пример — чтение записи с разделителями и обрезка пробелов в каждом поле:

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

Вывод содержит чистые значения без пробелов:

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

explode() также хорошо сочетается с деструктуризацией list() для извлечения именованных частей из строки:

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

Вывод:

Year: 2026, Month: 06, Day: 21

Подводные камни

  • Разделитель является буквальным, а не регулярным выражением. explode("-", ...) разбивает по дефису, а не по шаблону. Если нужно регулярное выражение (например, разбиение по любому количеству пробельных символов), используйте preg_split().
  • С помощью explode() нельзя разбить строку на отдельные символы. Пустой разделитель вызывает ValueError. Чтобы разбить строку на отдельные символы, используйте str_split().
  • Несколько соседних разделителей создают пустые элементы. explode(",", "a,,b") возвращает ["a", "", "b"]. Отфильтруйте их с помощью array_filter(), если они не нужны.
  • Разделитель не найден? Вы всё равно получите корректный массив — из одного элемента, содержащего всю строку, — поэтому обращение по индексу [0] всегда безопасно.

Связанные функции

  • implode() / join() — обратная операция: объединить массив в строку.
  • str_split() — разбить строку на части фиксированной длины (или на символы).
  • preg_split() — разбить строку с помощью регулярного выражения.
  • substr() — извлечь часть строки по позиции.
  • trim() — убрать пробельные символы из каждой части после разбиения.

Практика

Практика
Какова функциональность функции 'explode' в PHP?
Какова функциональность функции 'explode' в PHP?
Was this page helpful?