Коротко: строку в массив в PHP превращают функцией explode() — по разделителю. Для разбивки по символам есть str_split() и mb_str_split(), а для сложных правил — preg_split() с регулярным выражением.
Функции для строки в массив
| Функция | Когда использовать |
|---|---|
explode() |
есть чёткий разделитель |
str_split() |
по одному символу (байты) |
mb_str_split() |
по символам UTF-8 |
preg_split() |
сложные разделители |
explode — по разделителю
Основной и самый быстрый способ. Первый аргумент — разделитель, второй — строка.
php
$str = "яблоко,груша,слива";
$arr = explode(",", $str);
// ["яблоко", "груша", "слива"]
// с ограничением количества частей
$parts = explode(",", $str, 2);
// ["яблоко", "груша,слива"]str_split и mb_str_split — по символам
php
str_split("abc"); // ["a", "b", "c"]
str_split("abc", 2); // ["ab", "c"]
// для кириллицы и UTF-8
mb_str_split("привет"); // ["п","р","и","в","е","т"]str_split работает с байтами, поэтому русские буквы в UTF-8 «поедут». Для кириллицы всегда берите mb_str_split.
Вкладки: примеры
php
$row = "Иван;32;Москва";
[$name, $age, $city] = explode(";", $row);Разбор CSV-строки в именованные переменные. Удобно, когда структура полей известна и стабильна.
php
$str = "один два три";
$arr = preg_split("/\s+/", $str);
// ["один", "два", "три"]preg_split пригодится, когда разделителей несколько или их количество переменное: пробелы, запятые, точки с запятой.
php
$text = "строка1\nстрока2\nстрока3";
$lines = explode("\n", $text);
$lines = array_map('trim', $lines);Разбивка текста на строки и очистка пробелов через array_map. Частая задача при обработке файлов и вставленных списков.
explode() вернёт массив из одного элемента, если разделителя в строке нет. А если строка пустая, результат может быть неожиданным — всегда проверяйте входные данные перед разбором.Практика: выбрать функцию
- Есть чёткий разделитель? Берите
explode(). - Нужно разбить по символам кириллицы? —
mb_str_split(). - Используете ASCII-строку? Подойдёт
str_split(). - Разделителей несколько —
preg_split(). - Очистите элементы:
array_map('trim', $arr). - Проверьте результат функцией
print_rилиvar_dump.
Частые ошибки: причина → решение
| Симптом | Причина | Решение |
|---|---|---|
| Русские буквы «поломались» | str_split по байтам |
mb_str_split |
| Массив из одного элемента | разделителя нет | проверить строку |
| Лишние пробелы в элементах | не очищены | array_map('trim') |
| Пустые элементы в конце | лишний разделитель | отфильтровать пустые |
| Не разбивает по нескольким знакам | использован explode |
preg_split |
Проверьте себя
explode(), если разделителя нет?
Вопросы и ответы
str_split режет строку по байтам, а буква в UTF-8 занимает два байта. В результате символ разрывается пополам. Для кириллицы используйте mb_str_split.
Да, через preg_split с регулярным выражением, например /[,;]/ для запятой и точки с запятой. explode умеет только один разделитель.
Используйте array_filter($arr) — он уберёт пустые значения. Если важно оставить 0, добавьте свою функцию проверки.
Да, массив в строку собирает implode(): implode(",", $arr) соединит элементы через запятую.
Итоги
- По разделителю строку разбивает
explode(). - По символам —
str_split(), для UTF-8 —mb_str_split(). - Сложные разделители — задача
preg_split(). - Результат очищают через
array_map('trim')иarray_filter.
Комментарии
Пока комментариев нет — будьте первым, кто поделится мнением.