(PHP 4, PHP 5, PHP 7, PHP 8)
preg_split — Разбивает строку по регулярному выражению
Разбивает строку по регулярному выражению.
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().
Если соответствий не нашлось, то возвращается массив с единственным элементом равным всей строке.