Карманинг регуляр ифодалар орқали излашда PHP да
Бизда доменни ўз ичига олган маълум бир сатр бор деб фараз қилайлик:
<?php
$str = 'eee site.ru bbb';
?>
Келинг, бу доменни топиш ва уни қисмларга ажратишни амалга оширайлик: домен номини унинг зонасидан ажратамиз. Буни амалга ошириш учун биз регуляр ифодаларнинг махсус карманларидан фойдаланамиз.
Карманлар массив элементлари бўлиб, уларга регуляр ифода орқали топилган қисмларни "қўйиш" мумкин. Бизнинг ҳолимизда биринчи карманга домен номини, иккинчи карманга эса унинг зонасини қўйишимиз мумкин.
Буни амалга оширайлик. Аввалом, сатрдаги доменни топадган регуляр ифодани ёзайлик:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Энди бизнинг регуляр ифодамизда қайси қисмлар қайси карманга тушиши кераклигини белгилаймиз. Бу айлана скобкалар ёрдамида амалга оширилади. Келинг, улар ёрдамида домен номини изловчи регуляр ифода қисмини ва домен зонасини изловчи қисмни ажратамиз:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Энди preg_match функциясида учинчи параметр сифатида ўзгарувчини (номи исталганча) кўрсатамиз:
<?php
preg_match($reg, $str, $res);
?>
Кўрсатилган ўзгарувчига топилган карманлар билан массив солинади. Бунда, массивнинг ноль-элементида топилган сатр, биринчи элементда - биринчи карман, иккинчи элементда - иккинчи карман ва ҳоказо жойлашади:
<?php
preg_match($reg, $str, $res);
var_dump($res); // чиқади ['site.ru', 'site', 'ru']
?>
Санатни ўз ичига олган сатр берилган:
<?php
$str = '2025-12-31';
?>
Йил, ой ва кунни алоҳида карманларга қўйинг.
Файл номини ўз ичига олган сатр берилган:
<?php
$str = 'index.html';
?>
Файл номи ва унинг кенгайтмасини алоҳида карманларга қўйинг.