⊗ppPmRgRCb 260 of 447 menu

PHPда регулярки орқали коллбэк билан алмаштириш

Фарз қилайлик, бизда куйидаги қатор мавжуд:

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

Фарз қилайлик, бизга рақам+рақам= курилишидаги барча конструкцияларни топиш ва ушлаб қолиш керак, шуңға ўхшаш қилиб, тенглик ишорасидан кейин қўшиш натижаси пайдо бўлсин.

Бундай масалани ечиш учун preg_replace_callback функциясидан фойдаланиш қулай, бу функция preg_replace функциясига ўхшаш ишлайди - регуляр ифода бўйича топади ва алмаштиради, лекин топилган бўлаклар билан қўшимча манипуляциялар бажаришга имкон беради.

Биринчи параметр сифатида функция регуляркани қабул қилади, иккинчиси - нимага алмаштирамиз, учинчиси - алмаштириш амалга ошириладиган қатор.

Бу ҳолда иккинчи параметрга коллбэк-функция ўтказилиши керак, у ҳар бир топилган мослик учун чақирилади.

Коллбэкнинг биринчи параметри сифатида топилган нарса тушадigan ўзгаргувчини кўрсатиш керак. Бу ўзгаргувчи топилганнинг карманлари массиви бўлади.

Келинг, амалиётда синab кўрамиз. Код ёзамиз, у бизнинг қисма қаторларимизни ушлаб қолади, бу ҳолда биринчи рақамни биринчи карманга, иккинчисини - иккинчи карманга қўйиб:

<?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; // чиқади '! ! !' ?>

Энди ҳар бир қисма қаторни ундагі juft рақамлар йиғиндисига алмаштирамиз:

<?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हिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш