preg_match_all()
함수의 사용법
preg_match_all()
함수는
주어진 정규 표현식 패턴을 사용하여 문자열 내에서 일치하는 모든 부분(match all)을 찾는 함수입니다.
- 일치하는 모든 부분의 개수를 반환하며,
- 일치하는 패턴을 찾지 못하면
0
을 반환합니다. - 일치한 항목들을 담은 배열을 이 함수의 매개변수로 전달한 변수에 할당합니다.
- 에러가 발생한 경우
false
를 반환합니다.
문자열 내에서 정규 표현식을 사용하여 특정 패턴을 찾아 다른 문자열로 바꾸려면 preg_replace()
함수를 사용하세요.
preg_match_all()
함수의 형식은 다음과 같습니다.
구문
매개변수
$pattern |
필수. 검색할 정규 표현식 패턴입니다. |
---|---|
$subject |
필수. 검색 대상이 되는 문자열입니다. |
$matches |
필수. 정규 표현식 패턴에 일치하는 결과를 저장할 배열입니다.
이 배열은 함수 호출 후에 채워집니다. 참조 변수입니다.
|
$flags |
옵션. 추가적인 설정을 지정하는 플래그입니다.
다음과 같은 플래그를 사용할 수 있습니다.
|
$offset |
옵션. 검색을 시작할 문자열 내의 오프셋입니다. 0 부터 시작합니다.
이것을 사용하면 대상 문자열의 일부분만을 대상으로 할 수 있습니다. |
반환 값
- 일치하는 모든 부분의 개수를 반환하며,
- 일치하는 패턴을 찾지 못하면
0
을 반환합니다. - 일치한 항목들을 담은 배열을 이 함수의 매개변수로 전달한 변수에 할당합니다.
- 에러가 발생한 경우
false
를 반환합니다.
매개변수와 반환 값 예시
일치하는 모든 부분의 개수를 반환
preg_match_all()
함수는 대상 문자열에서 모든 일치하는 부분을 찾습니다. 반환 값은 일치하는 부분의 총 개수가 됩니다.
반면에 이 함수와 유사한 preg_match()
함수는
일치하는 패턴을 문자열에서 처음으로 발견되면 검색을 중단하고 1
을 반환합니다.
일치하는 패턴을 찾지 못하면 0
을 반환
일치하는 패턴을 찾지 못하면 0
을 반환합니다. 여기에서 주의할 점은 false
를 반환하지 않는다는 것입니다. false
는 에러가 발생한 경우에 반환됩니다.
에러가 발생하면 false
를 반환
일치한 항목들을 담은 배열을 매개변수로 전달한 변수에 할당
preg_match_all()
를 사용하여 일치한 항목들을 담은 배열을 다른 변수에 할당하려면 해당 배열을 참조로 전달하면 됩니다.
먼저 예시를 통해 살펴보겠습니다.
여기서 preg_match_all()
함수의 세 번째 매개변수로 $matches
배열을 전달하고 있습니다. 이때 $matches
배열은 함수 호출 후에 일치하는 부분 문자열들로 채워집니다. 코드에서 print_r($matches)
를 통해 배열의 내용을 출력하고 있습니다.
이렇게 하면 $matches
배열에 일치한 항목들이 할당되며, 함수 외부에서도 이 값을 사용할 수 있습니다.
활용 예제
preg_match_all()
함수는 이메일 주소, 전화번호, URL과 같은 특정 패턴의 문자열을 검사할 때 유용합니다. 또한, 다양한 상황에서 유용하게 활용될 수 있습니다. 여기에는 몇 가지 예제를 다룹니다.
이메일 주소 검사
핸드폰번호 검사
URL 검사
로그 파일에서 특정 이벤트 추출
위 코드에서 사용된 정규 표현식 /ERROR: (.+)/
에 대한 설명을 추가하겠습니다.
$pattern = '/ERROR: (.+)/';
: 이 정규 표현식은 다음과 같이 구성됩니다.
/
: 정규 표현식의 시작과 끝을 나타냅니다.ERROR:
: 문자열 "ERROR: "과 정확하게 일치합니다.(.+)
: 괄호로 묶인 부분은 일치하는 문자열의 임의의 문자열을 나타냅니다..+
는 최소한 하나 이상의 모든 문자를 나타내며,(.+)
는 이러한 패턴을 괄호로 묶어 추출할 수 있도록 합니다.
따라서, 이 정규 표현식은 "ERROR: " 다음에 나오는 모든 문자열을 추출하게 됩니다.
예를 들어, 다음과 같은 로그 파일 내용에서
위의 정규 표현식을 사용하면 다음과 같은 결과가 추출될 것입니다.
Something went wrong.
Another error occurred.
이것은 "ERROR: " 다음에 나오는 모든 문자열을 추출하여 출력하는 코드입니다.
같이 보기
- PHP preg_match() 함수 – 개념 정리 및 사용 예제
- PHP preg_split() 함수 - 개념 정리 및 사용 예제
- PHP strpos() 함수 – 대소문자 구분해서 문자열에 특정 문자 포함 여부 확인
- PHP stripos() 함수 – 대소문자를 구분 없이 문자열에 특정 문자 포함 여부 확인
- PHP mb_strpos() 함수 – strpos()의 한글 지원 기능 제공
- PHP str_contains() 함수 – 대소문자 구분해서 문자열에 특정 문자 포함 여부 확인
- PHP substr() 함수 - 문자열을 잘라서 추출하기
- PHP mb_substr() 함수 – substr()의 한글 깨짐을 해결하기
- PHP mb_stripos() 함수 – stripos()의 한글 지원 기능 제공
- PHP str_replace() 함수 – 문자열에서 특정 문자열을 다른 문자열로 바꾸는 함수
- PHP trim() 함수 - 문자열의 양쪽 끝에서 공백 또는 지정된 문자열 제거
- 자바스크립트 문자열 match() 함수 - 개념 정리 및 사용 예제