PHP, функция preg_split().
preg_split(модел, име_на_низ[, ограничение[, флагове]])
Поддържа се от следните PHP версии:
Описание на функцията:
Функцията preg_split разделя низ на поднизове, като използва регулярни изрази като разделители. Резултатът се връща като масив.
Задължителен аргумент. Списък с регулярни изрази.
Задължителен аргумент. Низът, който трябва да бъде разделен на поднизове.
Незадължителен аргумент. Максималният възможен брой елементи в върнатия масив.
Акоlimit е равно на-1, това означава, че максималният брой елементи не е ограничен (използва се, когато е необходим аргументътflags ).
Незадължителен аргумент. Може да бъде комбинация от следните стойности:
PREG_SPLIT_NO_EMPTY, ако този флаг е зададен, тогава функцията preg_split ще върне само непразни поднизове.
PREG_SPLIT_DELIM_CAPTURE, този флаг указва, че изразите в скоби в списък с регулярни изрази се връщат от функцията. (Флагът беше добавен в PHP 4.0.5)
Флагът PREG_SPLIT_OFFSET_CAPTURE указва отместването на всеки подниз от началото на низа. Данните се връщат като масив в масив. Елементът с индекс "0" на всеки вътрешен масив съдържа подниза, а елементът с индекс "1" съдържа отместването.
Флаговете могат да се използват поотделно или в комбинация, като в този случай те се свързват с помощта на оператора "".
Регулярни изрази
Отделно трябва да се спрем на регулярните изрази, без да разбираме кои е доста трудно (ако не и невъзможно) да разберем как работи функциятаpreg_split()..
Доста добро описание на регулярните изразидадени на wikipedia.org
Това са само основите на регулярните изрази.
[rk] - означава, че се търси или k, или r
[a-z] - търсене на малка буква от латинската азбука.
[0-9] - търсене на всяка цифра
[a-zA-Z] - търсене на една латинска буква
[a-z] - търсене на произволни 4 малки букви от латинската азбука, следващи една след друга
[a-z][0-9] - търсене на произволни 2 малки букви от латинската азбука и произволни две последователни цифри.
[a-z] - търсене от 1 до 2 знака от латинската азбука подред.
[a-z]* - търсене на произволен брой латински символи.
[a-z] - търсене на поне 2 знака от латинската азбука
[a-cf-x] - търсене на знак в два диапазона (a-c) и (f-x)
[-,a-z] - знакът за търсене може да бъде "-", "," или всяка буква от латинската азбука.
[0-9]+ знак "+" означава, че трябва да има поне 1 цифра.
[^abcd] - търсене на произволен знак с изключение на "a", "b", "c", "d"
[a-z]([0-9]) - намира 4 букви от латинската азбука и 3 цифри, които ще бъдат съхранени в специална php променлива
^[a-z][0-9]$ - символите ^ и $ обозначават началото и края на линията за изразяване на знаци.
\s - символ за интервал или раздел
\S - всички видими знаци
\w - дефинира знаците, от които може да се състои думата [a-zA-Z_].
\W - дефинира знаците, от които думата не може да се състои [^a-zA-Z_]
\d - всички цифри [0-9]
\D - всичко с изключение на числата
ui - този символ се задава, ако се използват българските букви "/[o]/ui".
i - поставете в края на регулярния израз, ако е необходимо търсене без разлика на главни и малки букви
/ /- наклонените черти символизират, че съдържат регулярния израз "/[a-z]/", вместо тях могат да се използват други наклонени чертигерои като (
Този пример разделя низа на поднизове с помощта на разделителя \s, за да посочи интервал или раздел. Знаците / показват, че \s е регулярен израз.
$arr_str = preg_split("/\s/", "PHP много полезен език"); print_r($arr_str); ?>
Масив ( [0] => PHP [1] => много [2] => полезен [3] => език )
В този пример разделителят е интервал, свързан с буквата "U"
$arr_str = preg_split("/\s[u]/", "PHP много полезен език"); print_r($arr_str); ?>
Масив ( [0] => PHP много [1] => полезен език)
Ако за разделител се използват български букви, трябва да се добавят символи "ui".
$arr_str = preg_split("/P/ui", "Петър Иванов"); print_r($arr_str); ?>
Масив ( [0] => Иванов [1] => Етр Сергеевич )
Този пример показва използването на флагаPREG_SPLIT_NO_EMPTY
$arr_str = preg_split("/ss/", "aassssaa",-1,PREG_SPLIT_NO_EPPTY); print_r($arr_str); ?>
Масив ( [0] => aa [1] => aa )
$arr_str = preg_split("/ss/", "aassssaa"); print_r($arr_str); ?>
Масив ( [0] => aa [1] => [2] => aa )
Този пример показва използването на флага PREG_SPLIT_OFFSET_CAPTURE
$arr_str = preg_split("/\s/", "PHP много полезен език",-1, PREG_SPLIT_OFFSET_CAPTURE); print_r($arr_str); ?>
Масив ( [0] => Масив ( [0] => PHP [1] => 0 ) [1] => Масив ( [0] => много [1] => 4 ) [2] => Масив ( [0] => полезен [1] => 9 ) [3] => Масив ( [0] => език [1] => 16 ) )
preg_split() тест за познаване на функцията
1. Изберете верния отговор.
$arr_str = preg_split("/\d/", "PHP5език"); print_r($arr_str); ?>
Масив ( [0] => PHP5език ) Масив ( [0] => PHP [1] => език ) "нищо"
2. Изберете верния отговор.
$arr_str = preg_split("*\d*", "PHP5language"); print_r($arr_str); ?>
Масив ( [0] => PHP5език ) Масив ( [0] => PHP [1] => език ) "Нищо"
3. Изберете верния отговор.
$arr_str = preg_split("/\s/", "Иванов Иван",1); print_r($arr_str); ?>
Масив ( [0] => Иванов [1] => Иванов Масив ( [0] => Иванов Иванов)