preg_grep în PHP

Păstrează dintr-un tablou doar elementele care se potrivesc cu o expresie regulată.

Sintaxă
preg_grep(string $pattern, array $array, int $flags = 0): array|false

Ce face preg_grep

preg_grep filtrează un tablou de texte după un șablon. Este o scurtătură pentru array_filter cu preg_match.

Cheile originale se păstrează. Cu PREG_GREP_INVERT obții elementele care nu se potrivesc.

Parametri

Parametru Descriere
$pattern Expresia regulată.
$array Tabloul de texte filtrat.
$flags Opțional. PREG_GREP_INVERT pentru elementele care nu se potrivesc.

Ce returnează

Un tablou cu elementele potrivite, cu cheile originale.

Exemple

Exemplul 1: Doar imaginile dintr-o listă de fișiere

<?php
$fisiere = ["cv.pdf", "poza.JPG", "logo.png", "notite.txt", "banner.webp"];

print_r(preg_grep('/\.(jpe?g|png|webp)$/i', $fisiere));

Rezultat

Array
(
    [1] => poza.JPG
    [2] => logo.png
    [4] => banner.webp
)

Exemplul 2: Elementele care nu se potrivesc

<?php
$telefoane = ["0742123456", "07421", "0232210500", "abc"];

print_r(array_values(preg_grep('/^0\d{9}$/', $telefoane, PREG_GREP_INVERT)));

Rezultat

Array
(
    [0] => 07421
    [1] => abc
)

Greșeli frecvente

  • Te miri că cheile rezultatului sunt 1, 2, 4. preg_grep păstrează cheile: adaugă array_values.

Comenzi înrudite

  • array_filter: Păstrează doar elementele dintr-un tablou care îndeplinesc o condiție.
  • preg_match: Verifică dacă un text se potrivește cu o expresie regulată și extrage prima potrivire.
  • in_array: Verifică dacă o valoare se află într-un tablou.