preg_split în PHP

Împarte un text în bucăți folosind o expresie regulată ca separator.

Sintaxă
preg_split(string $pattern, string $subject, int $limit = -1, int $flags = 0): array|false

Ce face preg_split

preg_split este varianta flexibilă a lui explode: separatorul poate fi orice potrivire a unui șablon, de exemplu „virgulă sau punct și virgulă, cu oricâte spații”.

Opțiuni utile: PREG_SPLIT_NO_EMPTY elimină bucățile goale, PREG_SPLIT_DELIM_CAPTURE păstrează și separatorii prinși între paranteze. Pentru a împărți în caractere un text UTF-8, folosește șablonul '//u'.

Parametri

Parametru Descriere
$pattern Expresia regulată care descrie separatorul.
$subject Textul împărțit.
$limit Opțional. Numărul maxim de bucăți. -1 sau 0 înseamnă fără limită.
$flags Opțional. PREG_SPLIT_NO_EMPTY, PREG_SPLIT_DELIM_CAPTURE, PREG_SPLIT_OFFSET_CAPTURE.

Ce returnează

Un tablou cu bucățile sau false la eroare.

Exemple

Exemplul 1: Separatori diferiți

<?php
$etichete = "php, mysql;wordpress ,  css;;html";

print_r(preg_split('/\s*[,;]\s*/', $etichete, -1, PREG_SPLIT_NO_EMPTY));

Rezultat

Array
(
    [0] => php
    [1] => mysql
    [2] => wordpress
    [3] => css
    [4] => html
)

Exemplul 2: Propoziții dintr-un text

<?php
$text = "Salut! Ce faci? Eu învăț PHP. Tu?";

print_r(preg_split('/(?<=[.!?])\s+/', $text));

Rezultat

Array
(
    [0] => Salut!
    [1] => Ce faci?
    [2] => Eu învăț PHP.
    [3] => Tu?
)

Greșeli frecvente

  • Folosești preg_split pentru un separator fix (o virgulă). explode este mai rapidă.
  • Împarți în caractere fără modificatorul u și diacriticele sunt rupte în octeți.

Comenzi înrudite

  • explode: Împarte un text în bucăți după un separator și le pune într-un tablou.
  • preg_match_all: Găsește toate potrivirile unei expresii regulate într-un text și le pune într-un tablou.
  • mb_str_split: Împarte un text în caractere (sau grupuri de caractere), fără să strice literele cu diacritice.
  • str_getcsv: Citește un rând în format CSV și îl împarte într-un tablou de valori.