Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як розбити рядок на частини й зібрати назад?

Основні функції:

explode(',', 'php,laravel,vue');          // ['php', 'laravel', 'vue']
explode(',', 'a,b,c,d', 2);               // ['a', 'b,c,d'] - не більше 2 частин
implode(', ', ['php', 'laravel']);        // 'php, laravel'

str_split('abcdef', 2);                   // ['ab', 'cd', 'ef'] - байтами!
mb_str_split('привіт', 2);                // ['пр', 'ив', 'іт'] - символами

preg_split('/[\s,;]+/', 'php, laravel; vue', -1, PREG_SPLIT_NO_EMPTY);
// ['php', 'laravel', 'vue'] - кілька роздільників

Типові пастки:

  • Порожній рядок: explode(',', '') повертає [''] - масив з одним порожнім елементом, а не порожній масив. Для введення користувача часто потрібне array_filter(array_map('trim', explode(',', $input))).
  • Пробіли: explode(',', 'a, b') дає ['a', ' b'] - з пробілом. Звідси array_map('trim', ...).
  • Кирилиця: str_split ділить байти й ламає багатобайтові символи. Для тексту - mb_str_split.
  • CSV не розбирають через explode: значення можуть містити коми в лапках ("Київ, Україна"). Для цього str_getcsv() чи SplFileObject з READ_CSV.

У Laravel зручніше через Str і колекції:

Str::of('php, laravel , vue')->explode(',')->map(fn ($s) => trim($s))->filter();

Докладніше в документації: explode

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання