PHP 정규 표현식 preg_match 사용 방법 예제

PHP에 정규 표현식을 사용하기 위해 preg_match함수를 사용하는 경우가 많습니다.

preg_match를 사용해 정규식을 작성하는 방법을 알아보겠습니다.

 

preg_match

첫 번째 인수 : 정규식 표현 작성.

두 번째 인수 : 검색 대상 문자열.

세 번째 인수 : 배열 변수 반환. 패턴 매치에서 매칭된 값을 배열로 저장.

반환값 : 매칭에 성공하면 1, 실패하면 0이 반환

 

샘플

<?php 

$text = 'My name is Tom';

// 정규식으로 tom 문자열이 있는지 확인
$reg = preg_match('/\btom\b/i',$text,$matches); 

var_dump($matches); 

?>

 

결과

array(1) { 
    [0]=> string(3) "Tom" 
} 

 

tom이라는 문자열을 대문자 소문자 관계없이 매칭한 값을 취득하는 정규식 표현입니다.

결과는 다음과 같습니다.

 

preg_match_all

preg_match은 매칭되는 값을 찾게 되면 그 시점에서 검색이 종료 됩니다.

하지만 매칭되는 모든 값을 취득하고 싶은 경우에는 적합하지 않기 때문에 매칭되는 모든 값을 취득하고 싶을 때에는 preg_match_all 함수를 사용합니다.

 

샘플

<?php 

$text = 'My name is Tom. I heard You are also tom, right? No, I am Tommy.'; 

$reg = preg_match_all('/\btom\b/i',$text,$matches); 

var_dump($matches); 

?> 

 

결과 

array(1) { 
    [0]=> array(2) { 
        [0]=> string(3) "Tom" 
        [1]=> string(3) "Tom" 
    }
}

 

검색 결과에는 Tom과 tom에 매칭되어 2개의 값을 배열로 취득하였습니다.

참고로 Tommy에는 매칭되지 않습니다.(\b으로 지정했기 때문에)

 

preg_replace

preg_replace는 검색 문자열과 매칭되는 값이 있으면 치환을 시켜주는 함수입니다.

첫 번째 인수 : 정규식 표현 작성.

두 번째 인수 : 치환 하고 싶은 문자 설정.

세 번째 인수 : 대상 문자열.

네 번째 인수 : 생략 가능. 하나만 치환 하고 싶은 경우 1을 설정.

 

샘플

<?php 

$text = 'I like a dog'; 

$reg = preg_replace('/a (.*)/i', 'a race', $text); 

echo $reg."\n";

?>

 

결과 

I like a race 

댓글