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] => Иванов Иванов)