logo

PHP funkce preg_match().

Funkce preg_match() je vestavěná funkce PHP, která provádí shodu regulárního výrazu. Tato funkce hledá v řetězci vzor a vrátí hodnotu true, pokud vzor existuje, jinak vrátí hodnotu false.

Obecně vyhledávání začíná od začátku $subject string parametr. Nepovinný parametr $offset slouží k zahájení vyhledávání od zadané pozice.

Syntax

 int preg_match (string $pattern, string $subject, array $matches, int $flags, int $offset) 

Poznámka: $offset je volitelný parametr, který určuje pozici, odkud má vyhledávání začít.

Parametry

Tato funkce přijímá pět parametrů, které jsou popsány níže:

vzor

Je to parametr typu řetězec. Tento parametr uchovává vzor pro vyhledávání jako řetězec.

předmět

Tento parametr obsahuje vstupní řetězec, ve kterém hledáme vzor.

zápasy

Pokud je zadán parametr odpovídá, bude obsahovat výsledky vyhledávání.

odpovídá[0] - Bude obsahovat text, který se shoduje s úplným vzorem.

zápasy[1] - Bude obsahovat text, který se shodoval s prvním zachyceným podvzorem v závorkách a tak dále.

vlajky

localdate

Příznaky mohou mít následující příznaky uvedené níže:

    PREG_OFFSET_CAPTURE:Pokud je tento příznak předán v preg_match(), pro každou vyskytující se shodu se také vrátí offset připojeného řetězce.PREG_UNMATCHED_AS_NULL:Pokud je tento příznak předán v preg_match(), neshodný podvzor bude hlášen jako NULL, jinak bude hlášen jako prázdný řetězec.

offset

Ve výchozím nastavení začíná vyhledávání od začátku parametru $subject. Parametr offset slouží k určení místa, kde začne vyhledávání. Je to volitelný parametr.

tučné písmo v css

Typ návratu

Funkce preg_match() vrátí hodnotu true, pokud se vzor shoduje jinak, vrátí hodnotu false.

Poznámka: Pokud chcete pouze zkontrolovat, zda je jeden řetězec obsažen v jiném řetězci, nepoužívejte funkci preg_match(). Použijte funkci strpos(), protože to bude rychlejší.

Příklady

 <?php //initialize a variable of string type $site = 'javatpoint'; preg_match('/(java)(t)(point)/', $site, $matches, PREG_OFFSET_CAPTURE); //display the matches result print_r($matches); ?> 

Výstup:

 Array ( [0] =&gt; Array ( [0] =&gt; javatpoint [1] =&gt; 0 ) [1] =&gt; Array ( [0] =&gt; java [1] =&gt; 0 ) [2] =&gt; Array ( [0] =&gt; t [1] =&gt; 4 ) [3] =&gt; Array ( [0] =&gt; point [1] =&gt; 5 ) ) 

Můžeme vidět výše uvedený výstup, jak je uvedeno níže, abychom mu lépe porozuměli.

 Array ( [0] =&gt; Array ( [0] =&gt; javatpoint [1] =&gt; 0 ) [1] =&gt; Array ( [0] =&gt; java [1] =&gt; 0 ) [2] =&gt; Array ( [0] =&gt; t [1] =&gt; 4 ) [3] =&gt; Array ( [0] =&gt; point [1] =&gt; 5 ) ) 

Příklady: vyhledávání bez rozlišení velkých a malých písmen

 <?php //initialize a variable of string type $website = 'JTP is a best online platform to learn.'; //case insensitive search for word jtp //The 'i' after pattern delimiter indicates case-insensitive search $res = preg_match('/jtp/i', $website, $matches); if ($res) { echo 'Pattern matched in string.</br>&apos;; print_r($matches); } else { echo &apos;Pattern not matched in string.&apos;; } ?&gt; 

Výstup:

 Pattern matched in string. Array ( [0] =&gt; JTP ) 

Příklady: pomocí hranice slova ()

 <?php /* The  indicates the word boundary in the pattern. So, it matches only the distinct word like 'web', and words like 'coreweb' or ' webinar' do not match partially.*/ if (preg_match('/web/i', 'PHP is a web scripting language.')) { echo 'A match was found. </br>&apos;; } else { echo &apos;A match was not found. <br>&apos;; } if (preg_match(&apos;/web/i&apos;, &apos;PHP is a website scripting language.&apos;)) { echo &apos;A match was found.&apos;; } else { echo &apos;A match was not found.&apos;; } ?&gt; 

Výstup:

 A match was found. A match was not found. 

Příklady: získat název domény z adresy URL

 

Výstup:

 Domain name is: javatpoint.com 

Syntaxe regulárního výrazu (Regular Expression).

[abc] Odpovídá jednomu znaku - a, b nebo c
[^abc] Odpovídá libovolnému jednotlivému znaku kromě a, b nebo c
[a-z] Odpovídá libovolnému jednotlivému znaku v rozsahu a–z
[a-zA-Z] Jakýkoli jednotlivý znak v rozsahu a–z nebo A–Z
^ Začátek řádku
$ Konec čáry
A Začátek řetězce
S Konec řetězce
. Jakákoli jednotlivá postava
s Jakýkoli znak mezery
S Jakýkoli znak bez mezer
d Jakákoli číslice
D Jakákoli nečíslice
V Libovolný znak slova (písmeno, číslo, podtržítko)
V Jakýkoli neslovní znak
 Kontrola hranic slova
/?/ Spustí a ukončí regulární výraz
(?) Zachyťte vše v závorkách ()
(a|b) a nebo b
A? Nula nebo jedna z a
A* Nula nebo více a
a+ Jeden nebo více z a
a{3} Přesně 3 z a
a{3,} 3 nebo více a
a{3,6} Mezi 3. a 6. hodinou a
i Kontrola nerozlišující malá a velká písmena
m Vytvořte tečkovou shodu nových řádků
X Ignorujte mezery v regulárním výrazu

Vysvětlení vzoru '[^[a-zA-Z0-9._-] +@[a-zA-Z0-9-]+.[a-zA-Z.]{2,5}$/]'

    ''/?/''Ukazuje začátek a konec regulárního výrazu.'[^[a-zA-Z0-9._-]'Vyhovuje všem velkým nebo malým písmenům, číslům od 0 do 9, tečce, podtržení nebo pomlčkám.'+@[a-zA-Z0-9-]'Odpovídá symbolu @ následovanému velkými nebo malými písmeny, čísly mezi 0 a 9 nebo pomlčkami.'+.[a-zA-Z.]{2,5}$/'Tečka je escapována pomocí zpětného lomítka a poté odpovídá všem malým nebo velkým písmenům o délce mezi 2 a 5 na konci řetězce.