⊗ppPmRgNPB 252 of 447 menu

PHP регуляр ифодаларда сақланмайдиган қавслар

Қавслар () икки функцияни бажаради - белгиларни гуруҳлаш ва карман функцияси. Аммо агар биз гуруҳлашни хохласак, лекин карманга қўйишни хохламасак нима қилиш керак? Бундай муаммони ҳал қилиш учун махсус сақланмайдиган қавслар (?: ) яратилган - улар гуруҳлайди, лекин карманга қўймайди.

Мисол

Қуйидаги мисолда биринчи қавслар бизга гуруҳлаш учун керак, иккинчилари эса карман учун. Аммо, ҳам биринчи, ҳам иккинчи қавслар маълумотларни карманга сақлайди:

<?php $str = 'abab123'; $reg = '#(ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

Натижада бизнинг карманларимизда қуйидагилар бўлади:

<?php var_dump($res[0]); // чиқади 'abab123' var_dump($res[1]); // чиқади 'ab' var_dump($res[2]); // чиқади '123' ?>

Мисол

Биринчи қавслар фақат гуруҳлашни бажариши, аммо карманга қўйишни бажармаслиги учун қилайлик:

<?php $str = 'abab123'; $reg = '#(?:ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

Натижада биринчи карманда бизнинг рақамимиз бўлади:

<?php var_dump($res[1]); // чиқади '123' ?>

Амалий вазифалар

Берилган подсатирлар ихтиёрий миқдордаги $@ жуфтлари билан икки қисмга бўлинган:

<?php $str = 'aaa$@bbb aaa$@$@bbb aaa$@$@$@bbb'; ?>

Ҳар бир бундай подсатирни топинг ва ҳар бир топилган подсатир учун биринчи карманга ажраткичдан олдин турувчи нарсани, иккинчи карманга эса ажраткичдан кейин турувчи нарсани қўйинг.

Ўзбек
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
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш