PHP Manual

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

26. 11. 2019

Obsah článku

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

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

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

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

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

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

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

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

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

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

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

Однак часто ми хочемо проаналізувати дані лише до певної відстані, і для цього можна використовувати третій (необов'язковий) параметр 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];
}

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

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

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

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

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

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

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

Параметри

| Тип | Опис

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

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

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

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

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

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

| Версія PHP | Опис | Опис |-----------|-------| | 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.
3.
Status:
All systems normal.
2024