Lommer ved søgning med regulære udtryk i PHP
Lad os sige, at vi har en streng, der indeholder et domæne:
<?php
$str = 'eee site.ru bbb';
?>
Lad os finde dette domæne og opdele det i dele: adskil domænenavnet fra dets zone. For at gøre dette vil vi bruge specielle lommer i regulære udtryk.
Lommer er elementer i et array, hvor man kan lægge dele af det fundne af det regulære udtryk. I vores tilfælde kan vi lægge domænenavnet i den første lomme, og i den anden - dets zone.
Lad os gøre det. Til at starte med, lad os skrive det regulære udtryk, der finder domænet i strengen:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Lad os nu i vores regulære udtryk angive, hvilke dele der skal gå i hvilken lomme. Dette gøres ved hjælp af runde parenteser. Lad os udskille den del af det regulære udtryk, der søger efter domænenavnet, og den del, der søger efter domænezonen med dem:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Nu i funktionen preg_match som
tredje parameter angiver vi en variabel (ethvert navn):
<?php
preg_match($reg, $str, $res);
?>
Den angivne variabel vil indeholde et array med de fundne lommer. Samtidig vil den fundne streng være i element nul i arrayet, det første element vil indeholde den første lomme, det andet element vil indeholde den anden lomme, og så videre:
<?php
preg_match($reg, $str, $res);
var_dump($res); // vil udskrive ['site.ru', 'site', 'ru']
?>
Der gives en streng med en dato:
<?php
$str = '2025-12-31';
?>
Læg året, måneden og dagen i separate lommer.
Der gives en streng med et filnavn:
<?php
$str = 'index.html';
?>
Læg filnavnet og dets filtype i separate lommer.