Как разбить строку на массив: explode
<?php
$tags = "php, mysql, html";
$list = explode(",", $tags);
print_r($list);Array
(
[0] => php
[1] => mysql
[2] => html
)explode(разделитель, строка) режет строку по разделителю и возвращает массив частей. Обратите внимание: у второй и третьей части остался пробел в начале — он стоял после запятой. Уберите пробелы у всех частей сразу:
<?php
$tags = "php, mysql, html";
$list = array_map('trim', explode(",", $tags));
echo implode("|", $list) . "\n";php|mysql|htmlimplode делает обратное: склеивает массив в строку через указанный разделитель.
Ограничить число частей
Третий аргумент — сколько частей нужно. Последняя часть забирает весь остаток строки:
<?php
[$key, $value] = explode("=", "title=Сказка = быль", 2);
echo $key . "\n";
echo $value . "\n";title
Сказка = быльПустые части
explode не выбрасывает пустые куски: explode(",", "a,,b") даёт три элемента, средний — пустая строка. А пустая строка на входе даёт массив из одного пустого элемента, а не пустой массив. Если пустые части не нужны, отфильтруйте их:
<?php
$parts = array_filter(array_map('trim', explode(",", "минск, ,брест,")), fn($s) => $s !== '');
echo count($parts) . "\n";
echo implode(", ", $parts) . "\n";2
минск, брестarray_filter сохраняет исходные ключи; если нужен список с нуля, оберните результат в array_values.
Несколько разделителей и пробелы
Если части разделены пробелами разной длины, запятыми и переносами строк вперемешку, нужна preg_split — разбивка по регулярному выражению (шаблону, который описывает, какие знаки искать):
<?php
$text = "Минск Брест,Гомель";
$words = preg_split('/[\s,]+/u', $text, -1, PREG_SPLIT_NO_EMPTY);
echo count($words) . "\n";
echo implode(" / ", $words) . "\n";3
Минск / Брест / Гомель[\s,]+ — один или несколько пробельных знаков или запятых подряд, флаг u — работа с UTF-8, PREG_SPLIT_NO_EMPTY — без пустых частей.
Текст по строкам надёжнее делить так: preg_split('/\R/', $text). \R означает любой перенос строки — и \n из Linux, и \r\n из Windows. После explode("\n", …) у строк из Windows остался бы невидимый \r в конце.
На отдельные буквы
<?php
echo implode(" ", mb_str_split("Лида")) . "\n";Л и д аstr_split делит по байтам и ломает русские буквы, mb_str_split — по буквам (есть с PHP 7.4).