Zsebek reguláris kifejezések használatakor PHP-ben
A preg_replace függvény használatakor,
ha valamit egy zsebbe helyezünk a reguláris kifejezésben,
akkor a csere sztringjében beilleszthetjük ennek
a zsebnek a tartalmát a dollár $ jel és a zseb
sorszámának megadásával. Például, $0 - a nulladik zseb,
$1 - az első zseb, $2 - a második
zseb és így tovább.
Hogy ez miért hasznos és hogyan kell használni, nézzük meg példákon keresztül.
Példa
Keressük meg az összes számot és helyettesítsük őket ugyanazokkal a számokkal, de kapcsos zárójelek között. Ehhez az összes talált számot lecseréljük magukra a számokra, de kapcsos zárójelek között:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'{1} {23} {456} xax'
Példa
Keressük meg az összes olyan sztringet, amely
számokat ábrázol
körülöttük lévő x-ekkel, és cseréljük le ezeket
a számokat magukra, de '!' jelekkel körülvéve:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'!1! !23! !456! xax'
Példa
Oldjuk meg a következő feladatot: adottak
'aaa@bbb' formájú sztringek - betűk, majd @ jel,
majd betűk. Fel kell cserélni az @ jel előtti
és utáni betűket. Valósítsuk meg:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'bbb@aaa ddd@ccc'
Gyakorlati feladatok
Adott egy sztring:
<?php
$str = '12 34 56 78';
?>
Cserélje fel a számjegyeket az összes kétjegyű számban.
Adott egy dátumot tartalmazó sztring:
<?php
$str = '31.12.2025';
?>
Alakítsa át ezt a dátumot '2025.12.31' formátumra.