NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

PHP - preg_match

Třída

Kořen \ Bez třídy

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ázevDatový typVýchozí hodnotaPopis
$patternstring

Vzor pro hledání v řetězci.

$subjectstring

Vstupní řetězec.

&$matchesarray

Pokud je proměnná $matches předána, je naplněno výsledky vyhledávání.

  • $matches[0] obsahuje řetězec vyhovující celému vzoru
  • $matches[1], ... další indexy obsahují nalezené řetězce vyhovující ozávorkovaným podvzorům
$flagsint 0

Pokud zadáme hodnotu PREG_OFFSET_CAPTURE, budou položky $matches pole o dvou klíčích, kdy na klíčí 0 bude daný podřetězec a na klíči 1 jeho pozici v celém řetězci.

$offsetint 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á vzoru
  • 0 - Řetězec neodpovídá vzoru
  • false - 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!';
}

Související manuály

        Aktivity