Fickor vid sökning med reguljära uttryck i PHP
Låt oss säga att vi har en sträng som innehåller en domän:
<?php
$str = 'eee site.ru bbb';
?>
Låt oss hitta denna domän och dela upp den i delar: separera domännamnet från dess zon. För att göra detta använder vi speciella fickor i reguljära uttryck.
Fickor representerar element i en array där man kan lägga delar av det som hittats av det reguljära uttrycket. I vårt fall kan vi lägga domännamnet i den första fickan, och dess zon i den andra.
Låt oss göra det. Låt oss först skriva ett reguljärt uttryck som hittar domänen i strängen:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Låt oss nu i vårt reguljära uttryck markera vilka delar som ska hamna i vilken ficka. Detta görs med hjälp av runda parenteser. Låt oss markera delen av det reguljära uttrycket som söker efter domännamnet, och den delen som söker efter domänzonen med dem:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Nu i funktionen preg_match som
tredje parameter anger vi en variabel (valfritt namn):
<?php
preg_match($reg, $str, $res);
?>
I den angivna variabeln kommer en array med de hittade fickorna att placeras. Samtidigt kommer den hittade strängen att finnas på nollelementet i arrayen, på det första elementet - den första fickan, på det andra elementet - den andra fickan, och så vidare:
<?php
preg_match($reg, $str, $res);
var_dump($res); // skriver ut ['site.ru', 'site', 'ru']
?>
Given en sträng med ett datum:
<?php
$str = '2025-12-31';
?>
Lägg året, månaden och dagen i separata fickor.
Given en sträng med ett filnamn:
<?php
$str = 'index.html';
?>
Lägg filnamnet och dess tillägg i separata fickor.