logo

PHP preg_match() 함수

preg_match() 함수는 정규식 일치를 수행하는 PHP 내장 함수입니다. 이 함수는 문자열에서 패턴을 검색하고, 패턴이 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

일반적으로 $subject 문자열 매개변수의 시작 부분부터 검색이 시작됩니다. 선택적 매개변수 $offset은 지정된 위치에서 검색을 시작하는 데 사용됩니다.

통사론

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

참고: $offset은 검색을 시작할 위치를 지정하는 선택적 매개변수입니다.

매개변수

이 함수는 아래에 설명된 5개의 매개변수를 허용합니다.

무늬

문자열 유형 매개변수입니다. 이 매개변수는 검색할 패턴을 문자열로 보유합니다.

주제

이 매개변수는 패턴을 검색하는 입력 문자열을 보유합니다.

성냥

match 매개변수가 제공되면 검색 결과가 포함됩니다.

일치[0] - 전체 패턴과 일치하는 텍스트를 보관합니다.

일치[1] - 괄호로 묶인 첫 번째 하위 패턴과 일치하는 텍스트가 포함됩니다.

깃발

jdbc jdbc

플래그에는 아래와 같은 플래그가 있을 수 있습니다.

    PREG_OFFSET_CAPTURE:이 플래그가 preg_match()에 전달되면 발생하는 모든 일치에 대해 추가 문자열 오프셋도 반환됩니다.PREG_UNMATCHED_AS_NULL:이 플래그가 preg_match()에 전달되면 일치하지 않는 하위 패턴은 NULL로 보고되고, 그렇지 않으면 빈 문자열로 보고됩니다.

오프셋

기본적으로 검색은 $subject 매개변수의 시작 부분부터 시작됩니다. offset 매개변수는 검색이 시작될 위치를 지정하는 데 사용됩니다. 선택적 매개변수입니다.

반환 유형

preg_match() 함수는 패턴이 일치하면 true를 반환하고 그렇지 않으면 false를 반환합니다.

참고: 한 문자열이 다른 문자열에 포함되어 있는지 여부만 확인하려면 preg_match() 함수를 사용하지 마세요. strpos() 함수를 사용하면 더 빠릅니다.

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

산출:

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

더 잘 이해하기 위해 위의 출력을 아래와 같이 볼 수 있습니다.

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

예: 대소문자를 구분하지 않는 검색

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

산출:

자바 대체 문자열
 Pattern matched in string. Array ( [0] =&gt; JTP ) 

예: 단어 경계 사용()

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

산출:

 A match was found. A match was not found. 

예: URL에서 도메인 이름 가져오기

 

산출:

 Domain name is: javatpoint.com 

Regex(정규식) 구문

[알파벳] 단일 문자(a, b 또는 c)와 일치합니다.
[^abc] a, b, c를 제외한 모든 단일 문자와 일치합니다.
[a-z] a-z 범위 내의 모든 단일 문자와 일치합니다.
[a-zA-Z] a-z 또는 A-Z 범위 내의 모든 단일 문자
^ 줄의 시작
$ 줄 끝
문자열의 시작
와 함께 문자열의 끝
. 임의의 단일 문자
에스 모든 공백 문자
에스 공백이 아닌 문자
임의의 숫자
숫자가 아닌 모든 것
안에 모든 단어 문자(문자, 숫자, 밑줄)
안에 단어가 아닌 문자
단어 경계 검사기
/?/ 정규식을 시작하고 끝냅니다.
(?) 괄호() 안의 내용을 모두 캡처합니다.
(a|b) a 또는 b
ㅏ? 0 또는 다음 중 하나
ㅏ* 0개 이상의
에이+ 다음 중 하나 이상
에{3} 정확히 3개
에{3,} 3개 이상
에{3,6} 3~6 사이
대소문자를 구분하지 않는 검사
도트 매치 개행 만들기
엑스 정규식에서 공백을 무시합니다.

'[^[a-zA-Z0-9._-] +@[a-zA-Z0-9-]+.[a-zA-Z.]{2,5}$/]' 패턴 설명

    ''/?/''정규식의 시작과 끝을 보여줍니다.'[^[a-zA-Z0-9._-]'대문자 또는 소문자, 0~9 사이의 숫자, 점, 밑줄 또는 대시와 일치합니다.'+@[a-zA-Z0-9-]'@ 기호 뒤에 대문자 또는 소문자, 0에서 9 사이의 숫자 또는 대시가 오는 것과 일치합니다.'+.[a-zA-Z.]{2.5}$/'점은 백슬래시를 사용하여 이스케이프된 다음 문자열 끝에서 길이가 2에서 5 사이인 모든 소문자 또는 대문자와 일치합니다.