[PHP] preg_match함수 알아보기

두비니

·

2019. 12. 30. 14:34

 

[PHP] preg_match함수 알아보기

 

 

 

우선 preg_match는 필터링을 하는 함수입니다.

 

 

preg_match(정규식 표현 작성, 검색 대상 문자열, 배열 변수반환)

 

 

단, 변수는 반환될 때 배열식으로 반환되게 되며, 리턴값은 성공시 1, 실패시 0으로 리턴됩니다. 다음 예제식을 봅시다.

 

<?php
$text = 'My name is Tom';
$reg = preg_match('/\btom\b/i',$text,$matches);
var_dump($matches);
?>

 

위 식의 결과값은 다음과 같겠죠?

 

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

 

물론 $reg값은 1이 되겠죠.

아, 참고로 왜 tom이 아니라 Tom이 검색되는지는 DB의 기본적인 성질때문인데, 대부분의 DB는 대소문자 구분을 하지 않기때문에 tom이 아닌 Tom, tOm, TOM등 모두 검색이 됩니다.

 

참고22) preg_match는 해당되는 문자열을 찾으면 바로 함수를 종료하는데, preg_match_all이라는 함수는 끝까지 값을 검사하기 때문에 전체 문자열을 필터링하고싶다면 preg_match_all함수를 이용하면 되겠죠?

 

 

preg_match를 쓸때 헷갈리는점은 한가지 정도? 있었던거 같네요.

 

우리가 C언어에서 개행문자(\n, \t, \a....)를 쓸때 앞에 \를 붙이는것처럼

preg_match함수의 정규식을 볼 때 안에 \가 있다면 그 뒤에있는 변수를 문자열로 보겠다는 의미로 그냥 전반적인 php에 대한 이야기이지만 취약점으로 많이 쓰이니 이점은 봐둘 만 한 것 같습니다.

'WEB' 카테고리의 다른 글

[PHP] strncmp 취약점(인증우회)  (0) 2021.03.21
[web] Cookie vs Session, 그리고 HTTP  (0) 2021.01.04
[React] React에 대해서  (0) 2019.11.17
React를 위한 Javascript 명령어들  (0) 2019.11.16
[JavaScript] 에서의 배열[Array]  (0) 2019.10.14