explode

(PHP 4, PHP 5)

explodeРозбиває рядок на підрядки

Опис

array explode ( string $delimiter , string $string [, int $limit ] )

Повертає масив рядків, кожен з яких є підрядком рядка string, який був поділений за допомогою роздільника delimiter.

Параметри

delimiter

Роздільник.

string

Вхідний рядок.

limit

Якщо параметр limit встановлений і мість додатнє число, вихідний масив міститиме максимум limit елементів. А останній елемент міститиме залишок рядка string.

Якщо параметр limit містить від'ємне число, повернуться всі елементи окрім останніх -limit.

Якщо параметр limit дорівнює нулю, то він розцінюється як 1.

Зауваження:

На відміну від implode(), яка з історичних причин може приймати параметри у будь-якому порядку, для explode() це недопустимо. Ви повинні переконатися, що аргумент delimiter знаходиться перед аргументом string.

Значення, що повертаються

Повертає масив (array) підрядків (string) створених шляхом поділу string на кордонах, заданих параметром delimiter.

Якщо delimiter є пустим рядком string (""), explode() поверне FALSE. Якщо delimiter містить значення, якого немає в string а також коли парамерт limit містить від'ємне значення - повертається порожній масив array. В інакшому випадку повертається масив array, який містить оригінальний рядок string.

Журнал Змін

Версія Опис
5.1.0 Додано підтримку від'ємного значення параметра limit

Приклади

Приклад #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 "Привіт";
$input2 "Привіт, народе!";
var_dumpexplode','$input1 ) );
var_dumpexplode','$input2 ) );

?>

Наведений вище приклад виведе:

array(1)
(
    [0] => string(6) "Привіт"
)
array(2)
(
    [0] => string(6) "Привіт"
    [1] => string(8) " народе!"
)

Приклад #3 Використання limit

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

// додатній ліміт
print_r(explode('|'$str2));

// від'ємний ліміт (з версії PHP 5.1)
print_r(explode('|'$str, -1));
?>

Наведений вище приклад виведе:

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

Примітки

Зауваження: Ця функція є бінарно-безпечною.

Прогляньте Також

add a note add a note

User Contributed Notes 5 notes

up
5
Emilio Bravo
2 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
4
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
-7
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
-29
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