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()