preg_filter în PHP

Ca preg_replace, dar returnează doar elementele în care a avut loc o înlocuire.

Sintaxă
preg_filter(array|string $pattern, array|string $replacement, array|string $subject, int $limit = -1, &$count = null): array|string|null

Ce face preg_filter

preg_filter primește aceiași parametri ca preg_replace. Diferența apare la tablouri: elementele în care șablonul nu s-a potrivit sunt eliminate din rezultat, iar cheile se păstrează.

Pentru un singur text, returnează textul înlocuit sau null dacă nu a existat nicio potrivire.

Parametri

Parametru Descriere
$pattern Expresia regulată (sau un tablou de expresii).
$replacement Textul pus în loc.
$subject Textul sau tabloul de texte.
$limit Opțional. Numărul maxim de înlocuiri.
$count Opțional. Variabilă în care se salvează numărul de înlocuiri.

Ce returnează

Tabloul cu elementele modificate, textul modificat sau null.

Exemple

Exemplul 1: preg_replace comparat cu preg_filter

<?php
$coduri = ["a1", "b", "c22", "d"];

print_r(preg_replace('/\d+/', '#$0', $coduri));
print_r(preg_filter('/\d+/', '#$0', $coduri));
var_dump(preg_filter('/\d+/', '#$0', "fără cifre"));

Rezultat

Array
(
    [0] => a#1
    [1] => b
    [2] => c#22
    [3] => d
)
Array
(
    [0] => a#1
    [2] => c#22
)
NULL

Greșeli frecvente

  • Folosești rezultatul ca text fără să verifici null. Când nu există potrivire, preg_filter nu returnează textul original.

Comenzi înrudite

  • preg_replace: Înlocuiește toate potrivirile unei expresii regulate cu alt text.
  • preg_grep: Păstrează dintr-un tablou doar elementele care se potrivesc cu o expresie regulată.
  • array_filter: Păstrează doar elementele dintr-un tablou care îndeplinesc o condiție.