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
댓글