preg_split
preg_split($vzor, $text, $limit, $priznaky)
Rozdělí text všude, kde odpovídá regulární výraz, a vrátí pole částí. Na rozdíl od explode() zvládne víc různých oddělovačů najednou.
Parametry
- $vzor – regulární výraz pro oddělovač.
- $text – rozdělovaný text.
- $limit – nepovinný, nejvyšší počet částí (−1 nebo 0 = bez omezení).
- $priznaky – nepovinný: PREG_SPLIT_NO_EMPTY vynechá prázdné části, PREG_SPLIT_DELIM_CAPTURE vrátí i oddělovače ze skupiny v závorkách, PREG_SPLIT_OFFSET_CAPTURE i pozice.
Příklady
// štítky oddělené čárkou, středníkem nebo mezerami
$stitky = preg_split("/[\s,;]+/", "php, mysql; css ,html", -1, PREG_SPLIT_NO_EMPTY);
echo implode("|", $stitky); // php|mysql|css|html
// řádky bez ohledu na konec řádku (Windows, Linux, starý Mac)
echo count(preg_split("/\R/", "a\r\nb\nc\rd")); // 4
// věty i s interpunkcí
$casti = preg_split("/([.!?])\s*/", "Ahoj. Jak se máš? Dobře!", -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
echo implode("|", $casti); // Ahoj|.|Jak se máš|?|Dobře|!
// text s diakritikou na jednotlivé znaky
echo implode(" ", preg_split("//u", "kůň", -1, PREG_SPLIT_NO_EMPTY)); // k ů ň
// jen na dvě části
echo implode("|", preg_split("/=/", "klic=hodnota=s=rovnitky", 2)); // klic|hodnota=s=rovnitky
Na co si dát pozor
- Pro jeden pevný oddělovač je rychlejší explode().
- Bez PREG_SPLIT_NO_EMPTY vzniknou prázdné části na začátku, na konci a mezi dvěma oddělovači.
- Pro text v UTF-8 přidávejte modifikátor u, jinak se dělení na znaky provede po bajtech.
- Při chybě vzoru vrátí false. Chybu zjistí preg_last_error().
Příbuzné funkce:
explode()
preg_match_all()
mb_str_split()
str_split()