Programming Language/PHP

[PHP] preg_match ( 패턴일치 & 정규표현식 적용)

재테크하는 개발자 2019. 10. 17. 16:39

시작에 앞서,

 

* 정규표현식에 대해 자세히 알고싶으신 분 or 정규표현식을 처음보시는 분은 아래 URL을 참고해주세요.

https://choseongho93.tistory.com/130

 

[Regex]정규표현식 기초 ( 정의 및 문자별 의미 ) / 자주 사용하는 정규표현식

● 정규 표현식이란? : 문자열을 바탕으로 검색해 패턴과 일치하는지 조사하고, 분할하는 문자열 처리 방법입니다. * 문자 클래스를 정의할 때 대괄호 안에 사용하는 메타 문자 메타 문자 설명 / 이스케이프 문자..

choseongho93.tistory.com

 

 

 

preg_match() 형식

$result = preg_match($pattern, $subject)

(preg_match()를 실행한 결과, 일치하면 1, 일치하지 않으면 0, 패턴을 인식하지못하는 오류발생하면 false가 return 됩니다.)

 

 


 

$result1 = preg_match("/hello/u", "world"); // 불일치
$result2 = preg_match("/hello/u", "hello"); // 일치
$result3 = preg_match("/hellou", "hello world"); // 패턴오류발생

var_dump($result1);
var_dump($result2);
var_dump($result3);

패턴으로 /(슬래시)와 / 안에 hello 문자를 넣고, 후자 파라미터로 "world"를 넣었습니다.

하지만, "hello"를 넣은 두번째 변수는 hello와 일치하여 1이 return 됩니다.

$result1은 불일치가 발생하고, $result2는 일치됩니다. 마지막 $result3는 패턴오류로 "false" 발생합니다.

(u 키워드는 패턴문자를 UTF-8 인코딩으로 다루어주는 '후치 option'입니다.)

 

 


 

// 개발자와 일치한다.
$pattern = "/개발자/u";
var_dump(preg_match($pattern,"제 직업은 경찰관입니다."));
var_dump(preg_match($pattern,"제 직업은 크리에이터입니다."));
var_dump(preg_match($pattern,"제 직업은 개발자입니다."));

$pattern 변수에 원하는 정규표현식 패턴을 선언해줍니다.

개발자와 일치하는 마지막만 1이 출력됩니다.

 

 

 

 

 

$pattern = "/^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/";
$myPhoneNumber = "010-1234-1234";
$yourPhoneNumber = "013-1234-1234";
var_dump(preg_match($pattern,$myPhoneNumber));
var_dump(preg_match($pattern,$yourPhoneNumber));

$pattern 변수에 휴대폰 정규표현식을 선언해주었습니다.

나의 폰번호는 010으로 시작하기에 1이 출력됩니다.

하지만, 너의 폰번호는 013으로 시작하기에 정규표현식에서 맞지않아 0이 출력됩니다.