PHP preg_match(): 정규식(Regex)
⚡ 스마트 요약
PHP의 정규 표현식은 단일 표현식으로 텍스트의 유효성 검사, 분할 및 바꾸기를 수행하는 패턴 매칭 도구입니다. 이 가이드에서는 핵심 함수인 `preg_match`, `preg_split`, `preg_replace`를 살펴보고, 일반적인 메타 문자를 설명하며, 이메일 유효성 검사 패턴을 단계별로 구축하는 방법을 보여줍니다.

PHP에서 정규 표현식이란 무엇인가요?
PHP 정규 표현식정규 표현식(regex)은 단일 표현식으로 수행할 수 있는 강력한 패턴 일치 도구입니다. 정규 표현식은 +, -, ^와 같은 특수 문자를 사용하여 복잡한 표현식을 만들 수 있습니다. 이메일 주소, IP 주소 등의 유효성 검사와 같은 작업을 수행하는 데 도움이 될 수 있습니다.
정규식을 사용하는 이유
- PHP 정규 표현식은 단일 함수 호출을 통해 문자열 데이터에서 패턴을 식별하는 작업을 간소화합니다. 덕분에 코딩 시간을 절약할 수 있습니다.
- 이메일 주소, 도메인 이름, 전화번호, IP 주소와 같은 사용자 입력을 검증할 때
- 검색 결과에서 키워드 강조 표시
- 사용자 정의 HTML 템플릿을 생성할 때. PHP의 Regex를 사용하여 템플릿 태그를 식별하고 이를 실제 데이터로 바꿀 수 있습니다.
PHP에 내장된 정규식 함수
PHP에는 정규 표현식을 다룰 수 있는 내장 함수들이 있으며, 이 튜토리얼에서 이러한 함수들을 배우겠습니다. PHP에서 자주 사용되는 정규 표현식 함수들을 살펴보겠습니다.
- PHP의 `preg_match()` 함수는 문자열에서 패턴 매칭을 수행하는 데 사용됩니다. 일치하는 항목이 있으면 `true`를, 없으면 `false`를 반환합니다.
- PHP의 `preg_split()` 함수는 문자열에서 패턴 매칭을 수행한 후 결과를 숫자 배열로 분할하는 데 사용됩니다.
- PHP의 preg_replace() – 이 함수는 문자열에서 패턴 일치를 수행한 다음 일치 항목을 지정된 텍스트로 바꾸는 데 사용됩니다.
다음은 preg_match(), preg_split(), preg_replace()와 같은 정규 표현식 함수의 구문입니다.
<?php
function_name('/pattern/',subject);
?>
이리,
- “function_name(…)”은 preg_match(), preg_split() 또는 preg_replace() 중 하나입니다.
- “/…/”에서 슬래시는 정규 표현식의 시작과 끝을 나타냅니다.
- "/pattern/"은 우리가 일치시켜야 하는 패턴입니다.
- "subject"는 일치시킬 텍스트 문자열입니다.
이제 위에서 설명한 PHP 정규 표현식 함수를 구현하는 실제 예제를 살펴보겠습니다.
PHP의 Preg_match()
첫 번째 예제는 preg_match() 함수를 사용하여 주어진 텍스트에서 "guru"라는 단어를 찾는 간단한 패턴 매칭을 수행합니다. URL.
아래 코드는 위 예제에 대한 preg_match() 함수의 구현을 보여줍니다.
<?php $my_url = "www.guru99.com"; if (preg_match("/guru/", $my_url)) { echo "the url $my_url contains guru"; } else { echo "the url $my_url does not contain guru"; } ?>
찾아보기 URL http://localhost/phptuts/preg_match_simple.php
이제 우리가 보고 있는 결과물을 만들어내는 코드 부분을 살펴보겠습니다. preg_match('/guru/', $my_url). 여기,
- "preg_match(...)"는 PHP 정규식 함수입니다.
- "'/guru/'"는 일치시킬 정규식 패턴입니다.
- "$my_url"은 일치시킬 텍스트가 포함된 변수입니다.
PHP Preg_split()
이제 preg_split() 함수를 사용하는 또 다른 예제를 살펴보겠습니다.
문자열 문구를 가져와서 배열로 분해하겠습니다. 일치시킬 패턴은 단일 공백입니다.
이 예에서 사용되는 텍스트 문자열은 "I Love Regular Expressions"입니다.
아래 코드는 위 예제의 구현을 보여줍니다.
<?php $my_text = "I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
찾아보기 URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
이제 preg_replace() 함수를 살펴보겠습니다. PHP 기능 패턴 일치를 수행한 다음 패턴을 다른 것으로 바꾸는 것입니다.
아래 코드는 guru라는 단어를 검색합니다. 현.
이 코드는 'guru'라는 단어를 배경색을 강조하는 CSS 코드로 둘러싸는 것으로 대체합니다.
<?php $text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com"; $text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text); echo $text; ?>
preg_replace.php 파일을 저장했다고 가정하고, 해당 파일로 이동하세요. URL http://localhost/phptuts/preg_replace.php
정규식 메타 문자
위 예시에서는 매우 기본적인 패턴을 사용했습니다. 메타문자를 사용하면 이메일 주소의 유효성 검사와 같이 더 복잡한 패턴 일치 작업을 수행할 수 있습니다. 이제 일반적으로 사용되는 메타문자를 살펴보겠습니다.
| 메타 문자 | 기술설명 | 예시 |
|---|---|---|
| . | 새 줄을 제외한 모든 단일 문자와 일치합니다. | /./는 단일 문자가 있는 모든 항목과 일치합니다. |
| ^ | 문자열의 시작 부분과 일치하거나 특정 문자를 제외합니다. | /^PH/는 PH로 시작하는 모든 문자열과 일치합니다. |
| $ | 문자열 끝부분의 패턴과 일치합니다. | /com$/는 guru99.com, yahoo.com 등과 일치합니다. |
| * | 앞의 문자 중 0개 이상과 일치합니다. | /com*/은 컴퓨터, 통신 등과 일치합니다. |
| + | 앞의 문자가 최소 한 번 이상 나타나야 합니다. | /yah+oo/는 야후와 일치합니다. |
| \ | 메타문자를 이스케이프하는 데 사용됩니다. | /yahoo+\.com/은 점을 리터럴 값으로 처리합니다. |
| [...] | 캐릭터 클래스 | /[abc]/는 a, b 또는 c와 일치합니다. |
| AZ | 소문자와 일치합니다. | /az/는 Cool, Happy 등과 일치합니다. |
| AZ | 대문자와 일치합니다. | /AZ/는 무엇, 어떻게, 왜 등과 일치합니다. |
| 0-9 | 0에서 9 사이의 숫자와 일치합니다. | /0-4/는 0,1,2,3,4와 일치합니다. |
위 목록은 정규식에서 가장 일반적으로 사용되는 메타 문자만 제공합니다.
이제 이메일 주소의 유효성을 확인하는 다소 복잡한 예제를 살펴보겠습니다.
<?php $my_email = "name@company.com"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email is a valid email address"; } else { echo "$my_email is NOT a valid email address"; } ?>
이메일 유효성 검사 패턴 설명
이리,
- “/…/”는 정규 표현식의 시작과 끝을 나타냅니다.
- “^[a-zA-Z0-9._-]”는 소문자 또는 대문자, 0에서 9 사이의 숫자, 마침표, 밑줄 또는 하이픈과 일치합니다.
- “+@[a-zA-Z0-9-]”는 @ 기호 뒤에 소문자 또는 대문자, 0에서 9 사이의 숫자, 또는 하이픈이 오는 것과 일치합니다.
- “+\.[a-zA-Z.]{2,5}$/”는 백슬래시를 사용하여 점을 이스케이프한 다음 문자열 끝에서 문자 길이가 2~5 사이인 소문자 또는 대문자와 일치합니다.
찾아보기 URL http://localhost/phptuts/preg_match.php
위의 분석에서 볼 수 있듯이, 메타 문자는 패턴을 찾는 데 매우 강력한 도구입니다.




