logo

Funkcja preg_match() w PHP

Funkcja preg_match() jest wbudowaną funkcją PHP, która wykonuje dopasowanie wyrażeń regularnych. Ta funkcja przeszukuje ciąg znaków pod kątem wzorca i zwraca wartość true, jeśli wzorzec istnieje, w przeciwnym razie zwraca wartość false.

Ogólnie rzecz biorąc, wyszukiwanie rozpoczyna się od początku parametru ciągu $subject. Opcjonalny parametr $offset służy do rozpoczęcia wyszukiwania od określonej pozycji.

Składnia

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

Uwaga: $offset to opcjonalny parametr określający pozycję, od której należy rozpocząć wyszukiwanie.

Parametry

Funkcja ta przyjmuje pięć parametrów, które opisano poniżej:

wzór

Jest to parametr typu string. Ten parametr przechowuje wzorzec do wyszukiwania jako ciąg.

temat

Parametr ten przechowuje ciąg wejściowy, w którym szukamy wzorca.

mecze

Jeśli podany zostanie parametr dopasowania, będzie on zawierał wyniki wyszukiwania.

mecze[0] - Będzie zawierać tekst pasujący do całego wzoru.

mecze[1] - Będzie zawierać tekst pasujący do pierwszego przechwyconego podwzorca w nawiasach i tak dalej.

flagi

c# zawiera ciąg

Flagi mogą mieć następujące flagi podane poniżej:

    PREG_OFFSET_CAPTURE:Jeśli ta flaga zostanie przekazana w preg_match(), dla każdego występującego dopasowania zwrócone zostanie również przesunięcie łańcucha dodatkowego.PREG_UNMATCHED_AS_NULL:Jeśli ta flaga zostanie przekazana w preg_match(), niedopasowany wzór podrzędny zostanie zgłoszony jako NULL, w przeciwnym razie zostanie zgłoszony jako pusty ciąg znaków.

zrównoważyć

Domyślnie wyszukiwanie rozpoczyna się od początku parametru $subject. Parametr offset służy do określenia miejsca, w którym rozpocznie się wyszukiwanie. Jest to parametr opcjonalny.

Typ zwrotu

Funkcja preg_match() zwraca wartość true, jeśli wzorzec pasuje, w przeciwnym razie zwraca wartość false.

Uwaga: Jeśli chcesz tylko sprawdzić, czy jeden ciąg znaków jest zawarty w innym ciągu, nie używaj funkcji preg_match(). Użyj funkcji strpos(), ponieważ będzie szybciej.

Przykłady

 <?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); ?> 

Wyjście:

 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 ) ) 

Powyższe dane wyjściowe możemy zobaczyć poniżej, aby lepiej je zrozumieć.

 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 ) ) 

Przykłady: wyszukiwanie bez uwzględniania wielkości liter

 <?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; 

Wyjście:

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

Przykłady: używając granicy słowa ()

 <?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; 

Wyjście:

 A match was found. A match was not found. 

Przykłady: pobierz nazwę domeny z adresu URL

 

Wyjście:

łączenie ciągu Java
 Domain name is: javatpoint.com 

Składnia Regex (wyrażenie regularne).

[ABC] Dopasowuje pojedynczy znak - a, b lub c
[^abc] Dopasowuje dowolny pojedynczy znak oprócz a, b lub c
[a-z] Dopasowuje dowolny pojedynczy znak z zakresu a–z
[a-zA-Z] Dowolny pojedynczy znak z zakresu a–z lub A–Z
^ Początek linii
$ Koniec linii
A Początek ciągu
z Koniec sznurka
. Dowolny pojedynczy znak
S Dowolny biały znak
S Dowolny znak inny niż spacja
D Dowolna cyfra
D Dowolny niecyfrowy
w Dowolny znak słowa (litera, cyfra, podkreślenie)
W Dowolny znak inny niż słowo
B Kontroler granic słów
/?/ Rozpoczyna i kończy wyrażenie regularne
(?) Przechwyć wszystko zawarte w nawiasach ()
(a|b) a lub B
A? Zero lub jedno z a
A* Zero lub więcej a
+ Jeden lub więcej z
a{3} Dokładnie 3 z
a{3,} 3 lub więcej a
a{3,6} Między 3 a 6 a
I Kontrola niewrażliwa na wielkość liter
M Dopasuj kropki do nowych linii
X Ignoruj ​​​​białe znaki w wyrażeniu regularnym

Wyjaśnienie wzorca '[^[a-zA-Z0-9._-] +@[a-zA-Z0-9-]+.[a-zA-Z.]{2,5}$/]'

    ''/?/''Pokazuje początek i koniec wyrażenia regularnego.„[^[a-zA-Z0-9._-]”Dopasowuje dowolne wielkie i małe litery, cyfry od 0 do 9, kropkę, podkreślenie lub myślniki.'+@[a-zA-Z0-9-]'Dopasowuje symbol @, po którym następują duże lub małe litery, cyfry od 0 do 9 lub myślniki.'+.[a-zA-Z.]{2,5}$/'Kropka jest usuwana za pomocą ukośnika odwrotnego, a następnie dopasowuje dowolne małe lub wielkie litery o długości od 2 do 5 na końcu łańcucha.