고급 PHP 프로그래밍 – 정규 표현식 – 2 – 정규 표현식 함수

고급 PHP 프로그래밍 - 정규 표현식 - 2 - 정규 표현식 함수
고급 PHP 프로그래밍 – 정규 표현식 – 2 – 정규 표현식 함수

고급 PHP 프로그래밍 – 정규 표현식 함수

안녕하세요! 😊
이전 시간까지 정규 표현식의 기본 문법패턴 매칭·치환 방법을 알아보았죠?
이번에는 PHP에서 정규 표현식을 본격적으로 사용할 수 있도록 도와주는 정규 표현식 함수들을 하나씩 자세히 살펴볼게요.

정규 표현식을 사용할 수 있는 함수는 단순히 “찾기”만 하는 게 아니라,
찾고, 바꾸고, 나누고, 응용하고—마치 문자열 속에서 원하는 조각을 퍼즐처럼 정확히 다룰 수 있게 해준답니다 🧩


PHP 정규 표현식 함수 요약

함수 설명 대표 용도
preg_match() 첫 번째 일치 항목 찾기 유효성 검사, 패턴 확인
preg_match_all() 모든 일치 항목 찾기 대량 추출
preg_replace() 문자열 치환 마스킹, 형식 변경
preg_replace_callback() 콜백을 통한 치환 동적 변경
preg_split() 패턴 기준으로 문자열 분리 복합 구분자 분할
preg_grep() 배열에서 정규식에 맞는 항목만 추출 필터링
preg_quote() 정규식에서 특수문자를 자동 이스케이프 동적 패턴 구성 시

1. preg_match()

첫 번째 일치 항목을 찾는 함수

$string = "PHP is great!";
if (preg_match("/PHP/", $string)) {
    echo "✅ 패턴을 찾았습니다!";
}
  • 결과: 1(매칭됨), 0(매칭 안 됨)
  • 세 번째 매개변수로 일치 결과를 배열로 추출 가능
preg_match("/(PHP)/", $string, $matches);
print_r($matches); // $matches[0] = 전체 매칭, $matches[1] = 그룹

2. preg_match_all()

모든 일치 항목을 배열로 반환

$text = "Email: test@a.com, contact@b.co.kr";
preg_match_all("/[\w\.-]+@[\w\.-]+\.\w+/", $text, $emails);
print_r($emails[0]);

→ 이메일 모두 추출: Array ( [0] => test@a.com [1] => contact@b.co.kr )


3. preg_replace()

일치하는 부분을 다른 문자열로 치환

$content = "이건 비밀이야 바보 멍청이!";
echo preg_replace("/바보|멍청이/", "****", $content);

이건 비밀이야 **** ****!


4. preg_replace_callback()

일치 항목을 콜백 함수로 처리해 동적으로 치환

$text = "상품 가격: 1000원, 배송비: 2500원";
echo preg_replace_callback("/\d+/", function($match) {
    return $match[0] * 1.1;
}, $text);

→ 결과: 상품 가격: 1100원, 배송비: 2750원


5. preg_split()

정규식 기준으로 문자열을 배열로 나눔

$fruits = "사과, 배, 바나나/포도 수박";
$split = preg_split("/[,\s\/]+/", $fruits);
print_r($split);

Array ( [0] => 사과 [1] => 배 [2] => 바나나 [3] => 포도 [4] => 수박 )


6. preg_grep()

배열에서 정규식에 맞는 값만 필터링

$items = ["apple", "banana", "pear", "avocado"];
$filtered = preg_grep("/^a/", $items);
print_r($filtered);

Array ( [0] => apple [3] => avocado )
^a는 ‘a’로 시작하는 문자열이라는 뜻이죠!


7. preg_quote()

정규식 특수문자를 자동 이스케이프해주는 함수

$keyword = "hello.world";
$pattern = "/".preg_quote($keyword, "/")."/";
echo $pattern; // → "/hello\.world/"

✅ 사용 예시: 사용자가 입력한 키워드를 기반으로 정규식을 만들 때 필수!


보너스: 정규식 플래그 사용하기

정규 표현식 끝에 붙여서 검색 방식에 영향을 주는 플래그도 있어요!

플래그 설명
i 대소문자 무시 (/php/i)
m 멀티라인 지원 (^, $가 줄마다 적용)
s .이 개행문자도 포함
u 유니코드(한글 등) 처리
preg_match("/php/i", "I love PHP"); // true

실전 예제: HTML 태그 제거

$html = "<h1>제목입니다</h1><p>내용입니다</p>";
$plain = preg_replace("/<[^>]+>/", "", $html);
echo $plain; // 제목입니다내용입니다

실전 예제: 주민등록번호 마스킹

$ssn = "870101-1234567";
echo preg_replace("/(\d{6})-(\d{7})/", "$1-*******", $ssn);

870101-*******


주의사항 정리

항목 주의사항
\ 이스케이프 정규식 내부에서는 특수문자를 \\로 처리해야 할 수 있어요
멀티바이트 문자 한글 등 유니코드는 /u 플래그 필수
속도 너무 복잡한 정규식은 성능에 악영향 줄 수 있어요
결과 배열 구조 preg_match_all()의 결과는 2차 배열일 수 있어요 (반복문 활용 주의)

마무리하며 😊

PHP의 정규 표현식 함수는 데이터 정제, 필터링, 치환, 파싱 등 모든 문자열 처리의 핵심 도구예요.
처음엔 어렵게 느껴질 수 있지만, 익숙해질수록 마치 문자열을 내 맘대로 조립하는 레고 블록처럼 느껴질 거예요 🧱

이제 정규 표현식과 PHP 함수들을 자유자재로 활용할 수 있게 되었으니,
로그 파서, 텍스트 필터, 사용자 입력 검증 등 실무에서도 멋지게 적용해보세요!

다음 시간에는 정규식 성능 최적화와 디버깅 팁도 알려드릴게요!
지금까지 잘 따라와 주셔서 감사합니다. 오늘도 뿌듯한 코딩 되세요! 💻✨

답글 남기기