explode

(PHP 4, PHP 5, PHP 7, PHP 8)

explodeРазбивает строку с помощью разделителя

Описание

explode(string $separator, string $string, int $limit = PHP_INT_MAX): array

Возвращает массив строк, полученных разбиением строки string с использованием separator в качестве разделителя.

Список параметров

separator

Разделитель.

string

Входная строка.

limit

Если аргумент limit является положительным, возвращаемый массив будет содержать максимум limit элементов, при этом последний элемент будет содержать остаток строки string.

Если параметр limit отрицателен, то будут возвращены все компоненты, кроме последних -limit.

Если limit равен нулю, то он расценивается как 1.

Замечание:

До PHP 8.0 функция implode() принимала параметры в любом порядке. Функция explode() никогда этого не поддерживала: убедитесь в том, что separator указан перед аргументом string.

Возвращаемые значения

Возвращает массив (array) строк (string), созданный делением параметра string по границам, указанным параметром separator.

Если separator является пустой строкой (""), explode() возвращает false. Если separator не содержится в string, и используется отрицательный limit, то будет возвращён пустой массив (array), иначе будет возвращён массив, содержащий string. Если значения separator появляются в начале или в конце string, указанные значения будут добавлены как пустое значение массива (array), либо в первой, либо в последней позиции возвращённого массива (array) соответственно.

Список изменений

Версия Описание
8.0.0 explode() теперь выбрасывает TypeError, если параметр separator является пустой строкой ("").

Примеры

Пример #1 Пример использования explode()

<?php
// Пример 1
$pizza  "кусок1 кусок2 кусок3 кусок4 кусок5 кусок6";
$pieces explode(" "$pizza);
echo 
$pieces[0]; // кусок1
echo $pieces[1]; // кусок2

// Пример 2
$data "foo:*:1023:1000::/home/foo:/bin/sh";
list(
$user$pass$uid$gid$gecos$home$shell) = explode(":"$data);
echo 
$user// foo
echo $pass// *

?>

Пример #2 Пример возвращаемого значения explode()

<?php
/*
   Строка, которая не содержит разделителя, будет
   просто возвращать массив с одним значением оригинальной строки.
*/
$input1 "hello";
$input2 "hello,there";
$input3 ',';
var_dumpexplode','$input1 ) );
var_dumpexplode','$input2 ) );
var_dumpexplode','$input3 ) );

?>

Результат выполнения данного примера:

array(1)
(
    [0] => string(5) "hello"
)
array(2)
(
    [0] => string(5) "hello"
    [1] => string(5) "there"
)
array(2)
(
    [0] => string(0) ""
    [1] => string(0) ""
)

Пример #3 Примеры с использованием параметра limit

<?php
$str 
'один|два|три|четыре';

// положительный лимит
print_r(explode('|'$str2));

// отрицательный лимит
print_r(explode('|'$str, -1));
?>

Результат выполнения данного примера:

Array
(
    [0] => один
    [1] => два|три|четыре
)
Array
(
    [0] => один
    [1] => два
    [2] => три
)

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Смотрите также

  • preg_split() - Разбивает строку по регулярному выражению
  • str_split() - Преобразует строку в массив
  • mb_split() - Разделение строк в многобайтных кодировках, используя регулярное выражение
  • str_word_count() - Возвращает информацию о словах, входящих в строку
  • strtok() - Разбивает строку на токены
  • implode() - Объединяет элементы массива в строку

add a note add a note

User Contributed Notes 5 notes

up
6
Emilio Bravo
3 years ago
$string = "PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION";
$exploded = explode("::",$string);
/*

explode('::',$string) = eliminate every :: and for each division of ::make an array element

Example:

PDO::ERRMODE_EXCEPTION (exploded) = array     (
                                                    [0] => string PDO
                                                    [1] => string ERRMODE_EXCEPTION
                                               )
Example:

$exploded[0] = "PDO";
*/
foreach ($exploded as $index) {
    echo $index . "\n";
}
/*

Output:

PDO
ATTR_ERRMODE => PDO
ERRMODE_EXCEPTION

*/
up
2
henrik Schmidt
3 years ago
"Return value" text needs updating for php 8, an empty delimiter now throws an Exception.
up
3
bocoroth
3 years ago
Be careful, while most non-alphanumeric data types as input strings return an array with an empty string when used with a valid separator, true returns an array with the string "1"!

var_dump(explode(',', null)); //array(1) { [0]=> string(0) "" }
var_dump(explode(',', false)); //array(1) { [0]=> string(0) "" }

var_dump(explode(',', true)); //array(1) { [0]=> string(1) "1" }
up
-5
David Spector
3 years ago
When using 'explode' to create an array of strings from a user-specified string that contains newline characters, you may wish the resulting array to correctly reflect the user's intentions by ignoring any final empty line (many users like to end multi-line input with a final newline, for clarity).

Here is a function to call after 'explode' to support this effect:

// When using explode, delete the last line in the array of lines when it is empty
function IgnoreEmptyLastLine(&$linesArr)
    {
    $last=count($linesArr)-1;
    if ($last>=0 && !$linesArr[$last])
        unset($linesArr[$last]);
    } // IgnoreEmptyLastLine
up
-26
leandro at primersistemas dot com dot br
3 years ago
function aexplode($delimiters,$string,$trimduplicate = false) {
    if (!is_array($delimiters))
        return explode($delimiters,$string);
    $stringaux = str_replace($delimiters, $delimiters[0], $string);
    if ($trimduplicate)
        while (strpos($stringaux,$delimiters[0].$delimiters[0]) !== false)
            $stringaux = str_replace($delimiters[0].$delimiters[0],$delimiters[0],$stringaux);
    return explode($delimiters[0],$stringaux);
}

This functions will work and accept array.
To Top