preg_replace_callback_array în PHP

Aplică mai multe expresii regulate pe același text, fiecare cu funcția ei de înlocuire.

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

Ce face preg_replace_callback_array

preg_replace_callback_array primește un tablou șablon => funcție. Șabloanele sunt aplicate pe rând, în ordinea din tablou, fiecare pe rezultatul celui anterior.

Înlocuiește mai multe apeluri preg_replace_callback consecutive și ține codul mai ordonat.

Parametri

Parametru Descriere
$pattern Tablou expresie regulată => funcție de înlocuire.
$subject Textul sau tabloul de texte.
$limit Opțional. Numărul maxim de înlocuiri pentru fiecare șablon.
$count Opțional. Variabilă în care se salvează numărul total de înlocuiri.
$flags Opțional. De exemplu PREG_OFFSET_CAPTURE.

Ce returnează

Textul nou sau null la eroare.

Exemple

Exemplul 1: Formatare simplă, în stil Markdown

<?php
$text = "Citește **ghidul** pe https://dexblog.ro și scrie la #php.";

echo preg_replace_callback_array([
    '/\*\*(.+?)\*\*/' => fn($m) => "<b>" . $m[1] . "</b>",
    '/https?:\/\/[^\s]+?(?=[\s.,]*(\s|$))/' => fn($m) => '<a href="' . $m[0] . '">' . $m[0] . "</a>",
    '/#(\w+)/' => fn($m) => '<a href="/tag/' . $m[1] . '/">#' . $m[1] . "</a>",
], $text, -1, $numar);

echo "\nÎnlocuiri: $numar";

Rezultat

Citește <b>ghidul</b> pe <a href="https://dexblog.ro">https://dexblog.ro</a> și scrie la <a href="/tag/php/">#php</a>.
Înlocuiri: 3

Greșeli frecvente

  • Uiți că șabloanele se aplică pe rând. Un șablon de mai jos poate modifica HTML-ul introdus de unul de mai sus (de exemplu # dintr-un link).

Comenzi înrudite

  • preg_replace_callback: Înlocuiește potrivirile unei expresii regulate cu rezultatul unei funcții scrise de tine.
  • preg_replace: Înlocuiește toate potrivirile unei expresii regulate cu alt text.