Lommer ved søk med regulære uttrykk i PHP
La oss si at vi har en streng som inneholder et domene:
<?php
$str = 'eee site.ru bbb';
?>
La oss finne dette domenet og dele det i deler: separere domenenavnet fra sonen. For dette vil vi bruke spesielle lommer i regulære uttrykk.
Lommer representerer elementer i en matrise, der man kan legge deler av det som ble funnet av det regulære uttrykket. I vårt tilfelle kan vi legge domenenavnet i den første lommen, og sonen i den andre.
La oss gjøre dette. Først, la oss skrive det regulære uttrykket som finner domenet i strengen:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
La oss nå i vårt regulære uttrykk angi hvilke deler som skal gå til hvilken lomme. Dette gjøres ved hjelp av runde parenteser. La oss markere delen av det regulære uttrykket som søker etter domenenavnet, og delen som søker etter domene sonen med dem:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Nå, i funksjonen preg_match, spesifiserer vi
en variabel (ethvert navn) som den tredje parameteren:
<?php
preg_match($reg, $str, $res);
?>
Den spesifiserte variabelen vil motta en matrise med de funnete lommene. Samtidig vil den funne strengen ligge i element null i matrisen, det første elementet vil være den første lommen, det andre elementet vil være den andre lommen, og så videre:
<?php
preg_match($reg, $str, $res);
var_dump($res); // vil skrive ut ['site.ru', 'site', 'ru']
?>
Gitt en streng med en dato:
<?php
$str = '2025-12-31';
?>
Plasser år, måned og dag i separate lommer.
Gitt en streng med et filnavn:
<?php
$str = 'index.html';
?>
Plasser filnavnet og dets filetternavn i separate lommer.