PHP Manual

PHP-функція Explode - розбиття рядка на роздільники

2019-11-26T10:39:36.000Z

Obsah článku

Explode використовується для того, щоб легко розділити рядок за допомогою роздільника.

  • Він повертає окремі результати у вигляді масиву, пронумерованого з нуля,
  • не можна вставити масив, вводиться тільки рядок,
  • не можна змінювати роздільник під час синтаксичного аналізу, не можна вибирати декілька роздільників.

| Підтримка PHP 4 і новіших версій
|---------------|-----------------|
| Короткий опис | Розбиття рядка на масив з допомогою роздільника.
| Вимоги | Немає
| Примітка | Неможливо вставити масив, тільки рядок.

Часто нам потрібно розділити рядок за якимось простим правилом. Наприклад, перелік чисел через кому.

Для цього чудово підходить функція explode(), що приймає в якості першого параметра роздільник (розділювач рядка), а в якості другого - самі дані:

$cisla = '3, 1, 4, 1, 5, 9';
$parser = explode(',', $cisla);
foreach ($parser as $cislo) {
echo $cislo . '<br>';
// Тут ми можемо обробляти числа далі
}

Aле що робити, якщо цифри розділені комами, але навколо них є пробіли?

Рішення полягає в розборі по найменшому спільному підрядку, а потім видаленні небажаних символів навколо нього (пробілів та інших пропусків):

$cisla = '3, 1,4, 1 , 5 ,9';
$parser = explode(',', $cisla);
foreach ($parser as $cislo) {
echo trim($cislo) . '<br>';
// Тут ми можемо обробляти числа далі
}

При цьому функція trim() елегантно видаляє пробіли навколо символів (пробіли, табуляції, переноси рядків, …), видаючи тільки чисті дані.

Ліміт, що обмежує кількість розібраних сутностей в масиві

ПOРAДA: Для багатьох прикладів explode() не підходить і набагато краще використовувати регулярні вирази.

Oднак часто ми хочемо проаналізувати дані лише до певної відстані, і для цього можна використовувати третій (необов'язковий) параметр limit.

Наприклад, нехай у нас є структуровані дані, розділені двокрапкою, де ми хочемо отримати вміст після першої двокрапки та ігнорувати інші двокрапки.
Приклад:

$cas = 'формат: "j.n.Y - H:i"';

Якби ми розбирали рядок тільки як:

$parser = explode(':', $cas);

Ми отримаємо ці 3 підрядки (в інших випадках їх може бути набагато більше):

'формат'
'"j.n.Y - H'
'i"'

Тому ми встановлюємо обмеження на кількість елементів, які можна отримати (і, можливо, всі інші будуть додаватися в кінець останнього елементу):

$parser = explode(':', $cas, 2);
// Повернись:
echo $parser[0]; // формат
echo $parser[1]; // "j.n.Y - H:i"

Примітка: Непотрібні лапки можна видалити з рядка, наприклад, за допомогою функції trim():

echo trim($parser[1], '"'); // другий параметр задає карту символів для видалення

Між, отримання рядка між двома рядками

Часто нам потрібно отримати рядок, який обмежений двома іншими рядками. Безпосередньо в PHP немає функції для цього, але ми можемо написати її самі:

function between(string $left, string $right, string $data): string
{
$l = explode($left, $data);
$r = explode($right, $l[1]);
return $r[0];
}

Регулярні вирази

Набагато більш елегантного розбиття і роботи з рядками можна досягти за допомогою регулярних виразів, про які я розповідаю на окремій сторінці.

Aналогічні функції

  • Implode() - об'єднання масиву в рядок

Приклад розбору IP-адреси

$ip = '10.0.0.138';
$parser = explode('.', $ip);
echo $parser[0]; // prints "10"
echo $parser[1]; // виводить "0";

Змінна $ip містить вхідний рядок, який розбирається згідно з розділювачем ., повернення - масив. Синтаксичний розбір продовжується до кінця рядка, якщо не вказано обмеження.

Параметри

| Тип | Oпис

|---|--------|------|
| 1-й рядок. Розділювальний рядок.
| 2 рядка. Розбір рядка.
| 3 | int | межа розбору. Це необов'язковий параметр. Приклад:

$text = 'PHP - моя улюблена мова!';
$parser = explode('', $text, 1);
echo $parser[0]; // виводиться перше слово
echo $parser[1]; // виводить решту тексту
echo $parser[2]; // нічого не виводить, тому що встановлено ліміт!

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

Значення, що повертається - масив з розібраним рядком.

Індекси нумеруються від нуля до X, якщо не вказано обмеження.

Відмінності від попередніх версій

Версія PHP Oпис Oпис
5.1.0 Додана підтримка від'ємного ліміту на пропуски.
4.0.1 Додано необов'язковий параметр limit.

Поради та примітки

При використанні від'ємного обмеження вказується кількість елементів з кінця рядка.

Приклад:

$str = 'один|два|три|чотири';
// позитивна межа
print_r(explode('|', $str, 2));
// від'ємний ліміт (починаючи з PHP 5.1)
print_r(explode('|', $str, -1));

Будуть повернуті наступні поля:

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

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
2.
3.
4.
Status:
All systems normal.
2025