array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.preg-split.php', 1 => 'preg_split', ), 'up' => array ( 0 => 'ref.pcre.php', 1 => 'Функции PCRE', ), 'prev' => array ( 0 => 'function.preg-replace.php', 1 => 'preg_replace', ), 'next' => array ( 0 => 'book.ssdeep.php', 1 => 'ssdeep', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/pcre/functions/preg-split.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
preg_split — Разбивает строку по регулярному выражению
Разбивает строку по регулярному выражению.
pattern
Строка, содержащая искомый шаблон.
subject
Входная строка.
limit
Если указан, функция возвращает не более, чем
limit
подстрок. Оставшаяся часть строки
будет возвращена в последней подстроке. Специальное значение
limit
, равное -1 или 0,
подразумевает отсутствие ограничения.
flags
flags
может быть любой комбинацией
следующих флагов (объединённых с помощью побитового оператора
|
):
PREG_SPLIT_NO_EMPTY
PREG_SPLIT_DELIM_CAPTURE
PREG_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().
Если соответствий не нашлось, то возвращается массив с единственным элементом равным всей строке.