explode
(PHP 4, PHP 5)
explode — Разбивает строку с помощью разделителя
Описание
$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
является пустой строкой (""),
explode() возвращает FALSE
. Если
delimiter
не содержится в string
,
и используется отрицательный limit
, то
будет возвращен пустой массив (array), иначе будет
возвращен массив, содержащий string
.
Список изменений
Версия | Описание |
---|---|
5.1.0 |
Добавлена поддержка отрицательных значений limit
|
4.0.1 |
Добавлен параметр 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 Примеры с использованием параметра limit
<?php
$str = 'один|два|три|четыре';
// положительный лимит
print_r(explode('|', $str, 2));
// отрицательный лимит (начиная с PHP 5.1)
print_r(explode('|', $str, -1));
?>
Результат выполнения данного примера:
Array ( [0] => один [1] => два|три|четыре ) Array ( [0] => один [1] => два [2] => три )
Примечания
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Смотрите также
- preg_split() - Разбивает строку по регулярному выражению
- str_split() - Преобразует строку в массив
- mb_split() - Разделение строк в многобайтных кодировках, используя регулярное выражение
- str_word_count() - Возвращает информацию о словах, входящих в строку
- strtok() - Разбивает строку на токены
- implode() - Объединяет элементы массива в строку
- addcslashes
- addslashes
- bin2hex
- chop
- chr
- chunk_split
- convert_cyr_string
- convert_uudecode
- convert_uuencode
- count_chars
- crc32
- crypt
- echo
- explode
- fprintf
- get_html_translation_table
- hebrev
- hebrevc
- hex2bin
- html_entity_decode
- htmlentities
- htmlspecialchars_decode
- htmlspecialchars
- implode
- join
- lcfirst
- levenshtein
- localeconv
- ltrim
- md5_file
- md5
- metaphone
- money_format
- nl_langinfo
- nl2br
- number_format
- ord
- parse_str
- printf
- quoted_printable_decode
- quoted_printable_encode
- quotemeta
- rtrim
- setlocale
- sha1_file
- sha1
- similar_text
- soundex
- sprintf
- sscanf
- str_getcsv
- str_ireplace
- str_pad
- str_repeat
- str_replace
- str_rot13
- str_shuffle
- str_split
- str_word_count
- strcasecmp
- strchr
- strcmp
- strcoll
- strcspn
- strip_tags
- stripcslashes
- stripos
- stripslashes
- stristr
- strlen
- strnatcasecmp
- strnatcmp
- strncasecmp
- strncmp
- strpbrk
- strpos
- strrchr
- strrev
- strripos
- strrpos
- strspn
- strstr
- strtok
- strtolower
- strtoupper
- strtr
- substr_compare
- substr_count
- substr_replace
- substr
- trim
- ucfirst
- ucwords
- vfprintf
- vprintf
- vsprintf
- wordwrap
Коментарии
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.
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" }
"Return value" text needs updating for php 8, an empty delimiter now throws an Exception.
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
$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
*/
<?php
/*Array to split*/
$task =["Teach","Assess","Record ","Examine","Investigate"];
/*use Implode() function to convert
$task into arrays of string
*/
$string=implode(",", $task);
/*use explode() function to seperate $string into different
$task into arrays of string
*/
explode(",", $string);
foreach ($task as $variable => $tk) {
$variable>0;
$variable++;
echo '$variable_'.$variable.' is ' .$tk.'<br>';
}
echo min(3,6);
?>
Note that an empty input string will still result in one element in the output array. This is something to remember when you are processing unknown input.
For example, maybe you are splitting part of a URI by forward slashes (like "articles/42/show" => ["articles", "42", "show"]). And maybe you expect that an empty URI will result in an empty array ("" => []). Instead, it will contain one element, with an empty string:
<?php
$uri = '';
$parts = explode('/', $uri));
var_dump($parts);
?>
Will output:
array(1) {
[0]=>
string(0) ""
}
And not:
array(0) {
}