⊗ppPmRgRCb 260 of 447 menu

Դիմումով փոխարինում PHP-ում կանոնավոր արտահայտությունների միջոցով

Ենթադրենք ունենք հետևյալ տողը.

<?php $str = '2+3= 3+5= 7+8='; ?>

Ենթադրենք, մեզ անհրաժեշտ է գտնել բոլոր կոնստրուկցիաները, որոնք նման են թիվ+թիվ= և անել այնպես, որ հավասարության նշանից հետո հայտնվի գումարման արդյունքը։

Նմանատիպ խնդիր լուծելու համար հարմար է օգտագործել preg_replace_callback ֆունկցիան, որն աշխատում է նույն կերպ, ինչ preg_replace ֆունկցիան՝ գտնում և փոխարինում է ըստ կանոնավոր արտահայտության, բայց թույլ է տալիս լրացուցիչ մանիպուլյացիաներ կատարել գտնված հատվածների հետ։

Առաջին պարամետրով ֆունկցիան ընդունում է կանոնավոր արտահայտությունը, երկրորդով՝ այն, ինչով փոխարինել, երրորդով՝ այն տողը, որում կատարվում է փոխարինումը։

Այդ դեպքում երկրորդ պարամետրին պետք է փոխանցել դիմում-ֆունկցիա, որը կկանչվի յուրաքանչյուր գտնված համընկնման համար։

Դիմումի առաջին պարամետրով պետք է նշել փոփոխական, որի մեջ կհայտնվի գտնվածը։ Այդ փոփոխականը կներկայացնի գտնվածի գրպանների զանգված։

Փորձենք գործնականում։ Գրենք կոդ, որը կբռնի մեր ենթատողերը, միաժամանակ դնելով առաջին թիվը առաջին գրպանում, իսկ երկրորդը երկրորդ գրպանում.

<?php $str = '2+3= 3+5= 7+8='; preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { var_dump($match); }, $str); ?>

Արդյունքում մեր var_dump-ը կգործի երեք անգամ, հերթականությամբ ցուցադրելով հետևյալը.

['2+3=', '2', '3'] ['3+5=', '3', '5'] ['7+8=', '7', '7']

Անցնենք հաջորդին։ Յուրաքանչյուր համընկնում կփոխարինվի այն բանով, ինչ դիմումը վերադարձնում է return-ի միջոցով։ Օրինակի համար եկեք փոխարինենք փնտրվող ենթատողերից յուրաքանչյուրը '!' նշանով.

<?php $str = '2+3= 3+5= 7+8='; $res = preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { return '!'; }, $str); echo $res; // կարտադրի '! ! !' ?>

Իսկ հիմա փոխարինենք յուրաքանչյուր ենթատող նրանում գտնվող զույգ թվերի գումարով.

<?php $str = '2+3= 3+5= 7+8='; $res = preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { return $match[1] + $match[2]; }, $str); echo $res; // կարտադրի '5 8 13' ?>

Ստացվում է, որ մեր խնդիրը գրեթե լուծված է։ Մնում է անել այնպես, որ թվերի գումարից առաջ մնա փնտրվող ենթատողը։ Դրա համար գումարից առաջ կտեղադրենք զրոյական գրպանի պարունակությունը.

<?php $str = '2+3= 3+5= 7+8='; $res = preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { return $match[0] . ($match[1] + $match[2]); }, $str); echo $res; // կարտադրի '2+3=5 3+5=8 7+8=13' ?>

Տրված է տող.

<?php $str = 'The numbers are 3, 7 and 12'; ?>

Փոխարինեք տողի բոլոր թվերը նրանց քառակուսիներով։

Սպասվող արդյունք.

'The numbers are 9, 49 and 144'

Տրված է տող.

<?php $str = '2023-01-15 2022-12-31 2024-05-20'; ?>

Բոլոր ամսաթվերը վերափոխեք օր.ամիս.տարի ֆորմատի։

Տրված է տող.

<?php $str = 'Costs: $15, $20, $100'; ?>

Բոլոր գները բարձրացրեք 10%-ով։

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել