(PHP 4, PHP 5, PHP 7, PHP 8)
preg_split — Разбивает строку по регулярному выражению
$pattern,$subject,$limit = -1,$flags = 0Разбивает строку по регулярному выражению.
patternСтрока, содержащая искомый шаблон.
subjectВходная строка.
limit
Если указан, функция возвращает не более, чем
limit подстрок. Оставшаяся часть строки
будет возвращена в последней подстроке. Специальное значение
limit, равное -1 или 0,
подразумевает отсутствие ограничения.
flags
flags может быть любой комбинацией
следующих флагов (объединённых с помощью побитового оператора
|):
PREG_SPLIT_NO_EMPTYPREG_SPLIT_DELIM_CAPTUREPREG_SPLIT_OFFSET_CAPTURE
Если указан этот флаг, для каждой найденной
подстроки будет указана её позиция в исходной строке.
Необходимо помнить, что этот флаг меняет формат
возвращаемого массива: каждый элемент будет содержать
массив, содержащий в индексе с номером 0
найденную подстроку, а смещение этой подстроки в параметре
subject - в индексе 1.
Возвращает массив, состоящий из подстрок заданной строки
subject, которая разбита по границам,
соответствующим шаблону pattern или false, если возникла ошибка.
Если передали шаблон регулярного выражения, который не компилируется в допустимое регулярное выражение,
выдаётся ошибка уровня E_WARNING.
Пример #1 preg_split() пример: Получение подстрок из заданного текста
<?php
// разбиваем строку по произвольному числу запятых и пробельных символов,
// которые включают в себя " ", \r, \t, \n и \f
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
?>Результат выполнения приведённого примера:
Array
(
[0] => hypertext
[1] => language
[2] => programming
)
Пример #2 Разбиваем строку на составляющие символы
<?php
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>Результат выполнения приведённого примера:
Array
(
[0] => s
[1] => t
[2] => r
[3] => i
[4] => n
[5] => g
)
Пример #3 Разбиваем строку с указанием смещения для каждой из найденных подстрок
<?php
$str = 'hypertext language programming';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?>Результат выполнения приведённого примера:
Array
(
[0] => Array
(
[0] => hypertext
[1] => 0
)
[1] => Array
(
[0] => language
[1] => 10
)
[2] => Array
(
[0] => programming
[1] => 19
)
)
Если вам не нужна мощь регулярных выражений, вы можете выбрать более быстрые (хоть и простые) альтернативы наподобие explode() или str_split().
Если соответствий не нашлось, то возвращается массив с единственным элементом равным всей строке.