PHP - preg_match
Třída
Metoda - preg_match
(PHP 4, PHP 5, PHP 7)
Funkce preg_match()
slouží k nalezení shody řetězce s
regulárním výrazem.
Pozor: Pro porovnávání návratové hodnoty použijte
operátor ===
, aby nedošlo k problémům s vyhodnocení hodnot
false
a 0
.
Pozn: Funkce preg_match()
se nehodí pro
zjištění, zda řetězec obsahuje podřetězec, pro tyto případy použijte
mb_strpos()
.
Procedurální
- function preg_match (string $pattern, string $subject, array &$matches, int $flags = 0, int $offset = 0) : int
Parametry
Název | Datový typ | Výchozí hodnota | Popis |
---|---|---|---|
$pattern | string | Vzor pro hledání v řetězci. | |
$subject | string | Vstupní řetězec. | |
&$matches | array | Pokud je proměnná
| |
$flags | int | 0 | Pokud zadáme hodnotu |
$offset | int | 0 | Pokud parametr zadáme, vyhledávání nezačíná od začátku řetězce, ale bude přeskočen daný počet bajtů. |
Návratové hodnoty
Vrací: int
Funkce může vrátit 3 různé hodnoty, pozor, abyste nezaměnili
0
a false
! Použijte operátor ===
pro
ověření této hodnoty.
1
- Řetězec odpovídá vzoru0
- Řetězec neodpovídá vzorufalse
- Nastala chyba
Příklady
Ukázka zjednodušeného hledání částí emailu:
<?php
echo '<pre>';
preg_match('/(.*)@(.*)\.(.*)/', '[email protected]', $matches); // najde jednotlivé části emailu
print_r($matches);
preg_match('/(.*)@(.*)\.(.*)/', '[email protected]', $matches, PREG_OFFSET_CAPTURE); // zjistí i pozice jednotlivých částí
print_r($matches);
echo '</pre>';
Praktické využití pro ověření validity uživatelské přezdívky:
<?php
$nickname = 'Honza';
if (preg_match('/\A[A-Za-z0-9]{4,16}\z/', $nickname)) {
echo 'Přezdívka "'.$nickname.'" je v pořádku!';
} else {
echo 'Přezdívka "'.$nickname.'" není v pořádku!';
}
echo '<br>';
$nickname = 'El Banana';
if (preg_match('/\A[A-Za-z0-9]{4,16}\z/', $nickname)) {
echo 'Přezdívka "'.$nickname.'" je v pořádku!';
} else {
echo 'Přezdívka "'.$nickname.'" není v pořádku!';
}