Regular ifodalar orqali qidiruvda karmalar PHPda
Faraz qilaylik, bizda domenni o'z ichiga olgan qator mavjud:
<?php
$str = 'eee site.ru bbb';
?>
Keling, ushbu domenni topamiz va uni qismlarga ajiratamiz: domen nomini uning zonalaridan ajratamiz. Buning uchun biz regular ifodalarning maxsus karmalardan foydalanamiz.
Karmalar massiv elementlari bo'lib, ularga regular tomonidan topilgan qismlarni qo'yish mumkin. Bizning holatda, birinchi karmaga domen nomini, ikkinchisiga esa uning zonasini qo'yishimiz mumkin.
Buni qilaylik. Boshlash uchun, satrdagi domenni topadigan regular yozamiz:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Keling, endi bizning regularimizda qaysi qismlar qaysi karmaga tushishini belgilab beraylik. Buni dumaloq qavslar yordamida amalga oshiramiz. Keling, ular yordamida domen nomini qidiradigan regular qismini va domen zonasini qidiradigan qismini ajratib ko'rsatamiz:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Endi preg_match funksiyasida
uchinchi parametr sifatida o'zgaruvchini (istalgan nom) ko'rsatamiz:
<?php
preg_match($reg, $str, $res);
?>
Ko'rsatilgan o'zgaruvchiga topilgan karmalar bilan massiv tushadi. Bunda, massivning nolinchi elementida topilgan qator, birinchi elementida - birinchi karman, ikkinchi elementida - ikkinchi karman va hokazo bo'ladi:
<?php
preg_match($reg, $str, $res);
var_dump($res); // chiqaradi ['site.ru', 'site', 'ru']
?>
Sana bilan qator berilgan:
<?php
$str = '2025-12-31';
?>
Yil, oy va kunni alohida karmalarga qo'ying.
Fayl nomi bilan qator berilgan:
<?php
$str = 'index.html';
?>
Fayl nomi va uning kengaytmasini alohida karmalarga qo'ying.