⊗ppPmRgRP 253 of 447 menu

Taskud regulaaravalduste asendamisel PHP-s

Funktsiooniga preg_replace töötamisel, kui me paneme regulaaravalduses midagi taskusse, siis asendusstringis saame selle tasku sisu sisestada kirjutades dollari märgi $ ja tasku numbri. Näiteks $0 - nullis tasku, $1 - esimene tasku, $2 - teine tasku ja nii edasi.

Miks seda vaja on ja kuidas seda kasutada vaatame näidete varal.

Näide

Leiame kõik numbrid ja nende asemele paneme samad numbrid, kuid lokkis sulgudes. Selleks asendame kõik leitud numbrid nendega isese, kuid lokkis sulgudes:

<?php $str = '1 23 456 xax'; $res = preg_replace('#(\d+)#', '{$1}', $str); ?>

Tulemusena kirjutatakse muutujasse järgmine:

'{1} {23} {456} xax'

Näide

Leiame kõik stringid, mis esindavad ümberringi iksikutega numbreid ja asendame need numbrid endaga, kuid ümber '!' märkidega:

<?php $str = 'x1x x23x x456x xax'; $res = preg_replace('#x(\d+)x#', '!$1!', $str); ?>

Tulemusena kirjutatakse muutujasse järgmine:

'!1! !23! !456! xax'

Näide

Lahendame järgmise ülesande: on antud stringid kujul 'aaa@bbb' - tähed, siis @, siis tähed. On vaja vahetada tähed enne '@' ja pärast. Rakendame:

<?php $str = 'aaa@bbb ccc@ddd'; $res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str); ?>

Tulemusena kirjutatakse muutujasse järgmine:

'bbb@aaa ddd@ccc'

Praktilised ülesanded

Antud string:

<?php $str = '12 34 56 78'; ?>

Vahetage kõigis kahekohalistes numbrites numbrite kohad.

Antud string kuupäevaga:

<?php $str = '31.12.2025'; ?>

Teisendage see kuupäev kujule '2025.12.31'.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu