PHP preg_match(): 정규식(Regex)

PHP의 정규 표현식이란 무엇입니까?

PHP 정규식 정규 표현식이라고도 알려진 정규 표현식은 단일 표현식으로 수행할 수 있는 강력한 패턴 매칭 알고리즘입니다. 정규 표현식은 (+,-,^)와 같은 산술 연산자를 사용하여 복잡한 표현식을 만듭니다. 이메일 주소, IP 주소 등의 유효성 검사와 같은 작업을 수행하는 데 도움이 될 수 있습니다.

정규식을 사용하는 이유

  • PHP 정규식은 단일 함수를 호출하여 문자열 데이터의 패턴 식별을 단순화합니다. 이를 통해 코딩 시간이 절약됩니다.
  • 이메일 주소, 도메인 이름, 전화번호, IP 주소 등 사용자 입력을 검증할 때
  • 검색 결과에서 키워드 강조 표시
  • 사용자 정의 HTML 템플릿을 생성할 때. PHP의 Regex를 사용하여 템플릿 태그를 식별하고 이를 실제 데이터로 바꿀 수 있습니다.

PHP에 내장된 정규식 함수

PHP에는 이 PHP 정규식 튜토리얼에서 배울 정규 함수로 작업할 수 있는 함수가 내장되어 있습니다. PHP에서 일반적으로 사용되는 정규식 함수를 살펴보겠습니다.

  • preg_match() in PHP – 이 함수는 PHP에서 문자열에 대한 패턴 일치를 수행하는 데 사용됩니다. 일치하는 항목이 있으면 true를 반환하고, 일치하는 항목을 찾지 못하면 false를 반환합니다.
  • PHP의 preg_split() – 이 함수는 문자열에서 패턴 일치를 수행한 다음 결과를 숫자 배열로 분할하는 데 사용됩니다.
  • PHP의 preg_replace() – 이 함수는 문자열에서 패턴 일치를 수행한 다음 일치 항목을 지정된 텍스트로 바꾸는 데 사용됩니다.

다음은 PHP preg_match(), PHP preg_split() 또는 PHP preg_replace()와 같은 정규식 함수에 대한 구문입니다.

<?php
function_name('/pattern/',subject);
?>

이리,

  • "function_name(...)"은 PHP preg_match(), PHP preg_split() 또는 PHP preg_replace()입니다.
  • "/.../" 슬래시는 PHP 정규식 테스터 기능의 시작과 끝을 나타냅니다.
  • "'/pattern/'"은 일치해야 하는 패턴입니다.
  • "subject"는 일치시킬 텍스트 문자열입니다.

이제 위의 PHP 정규식 함수를 구현하는 실제 예제를 살펴보겠습니다.

PHP의 Preg_match()

첫 번째 예에서는 PHP 함수의 preg_match()를 사용하여 주어진 URL에서 guru라는 단어에 대한 간단한 패턴 일치를 수행합니다.

아래 코드는 위 예제에 대한 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()

이제 PHP 함수에서 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_split()

PHP Preg_replace()

이제 preg_replace()를 살펴보겠습니다. PHP 기능 패턴 일치를 수행한 다음 패턴을 다른 것으로 바꾸는 것입니다.

아래 코드는 guru라는 단어를 검색합니다. .

guru라는 단어를 배경색을 강조하는 CSS 코드로 둘러싸인 guru라는 단어로 바꿉니다.

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

PHP Preg_replace()

정규식 메타 문자

위의 예는 매우 기본적인 패턴을 사용했습니다. 메타문자는 이메일 주소의 유효성을 테스트하는 것과 같이 더 복잡한 패턴 일치를 수행할 수 있도록 해줍니다. 이제 일반적으로 사용되는 메타문자를 살펴보겠습니다.

메타 문자 상품 설명 예시
. 새 줄을 제외한 모든 단일 문자와 일치합니다. /./는 단일 문자가 있는 모든 항목과 일치합니다.
^ 시작 또는 문자열과 일치 / 문자 제외 /^PH/는 PH로 시작하는 모든 문자열과 일치합니다.
$ 문자열 끝의 패턴과 일치합니다. /com$/은 guru99.com,yahoo.com 등과 일치합니다.
* 0개 이상의 문자와 일치합니다. /com*/은 컴퓨터, 통신 등과 일치합니다.
+ 선행 문자가 한 번 이상 나타나야 합니다. /yah+oo/는 야후와 일치합니다.
\ 메타 문자를 이스케이프하는 데 사용됩니다. /yahoo+\.com/은 점을 리터럴 값으로 처리합니다.
[...] 캐릭터 클래스 /[abc]/는 abc와 일치합니다.
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._-]+@[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 사이인 모든 소문자 또는 대문자와 일치합니다.

URL로 이동 http://localhost/phptuts/preg_match.php

[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]

위의 분석 예에서 볼 수 있듯이 메타문자는 패턴 일치와 관련하여 매우 강력합니다.

요약

  • PHP의 정규 표현식 또는 Regex는 패턴 일치 알고리즘입니다.
  • 정규식은 유효성 검사를 수행하고 태그를 인식하는 HTML 템플릿 시스템을 생성할 때 매우 유용합니다.
  • PHP 정규식을 지원하는 PHP preg_match(), PHP preg_split() 및 PHP preg_replace() 함수가 내장되어 있습니다.
  • 메타문자를 사용하면 복잡한 패턴을 만들 수 있습니다.