728x90
반응형
워게임 문제를 풀던 중 preg_match 함수를 잘 몰라서 찾아보았다.
함수가 쓰이는 형식은 다음과 같이 사용된다.
<?php
preg_match('/대조 할 문자/', '입력한 문자', $matches);
//$matches 뒤에 PREG_OFFSET_CAPTURE를 사용하기도 함
?>
대조 할 문자 : 찾고 싶거나 필터링 할 문자열을 넣는다.
만약에 특수문자를 필터링 하고 싶다면 특수문자 앞에 \를 붙이면 된다. 예시로 ' 를 필터링 하고싶다. → '/\'/'
대소문자를 구분하지 않고 필터링 하고 싶다면 뒤에 i를 붙이면 된다. 예시로 admin을 대소문자 구분 없이 필터링 하고 싶다면 → '/admin/'i
입력한 문자 : GET, POST 방식의 사용자 입력 값을 담는 변수명을 넣는다.
사용자의 입력 값을 GET, POST 방식으로 가져와 바로 비교하는 경우에는 $_GET[id] 를 넣어도 되고,
사용자 입력 값을 담는 변수명으로 비교하는 경우에는 $idInput = $_GET['id']; 로 값이 담기는 경우 GET방식으로 id변수의 값을 idInput으로 가져오게 되는데 $idInput 으로 입력한 문자 공간에 넣어도 된다.
$matches : 필터링에 검거된 문자열이 기록된다.
사용자가 설정한 값과 Input 값이 일치하는 경우, 해당 값을 $matches에 배열 형태로 저장한다.
예시로 함수가 preg_match('/abcd/', $idInput, $matches) 로 쓰여있는 경우, $idInput 에 있는 값이 asd123 이면, a와 d가 $matches에 배열 형태로 저장된다.
함수 반환 값
1 : 하나라도 문자열이 검거 된다면
0 : 하나라도 검거되지 않는다면
그 외 메모
preg_match 외의 문자열 필터링 함수
- str_replace, preg_replace : 다른 문자로 바꿔줌
- eregi : preg_match 전 비슷한 원리로 문자열을 필터링 해주는 함수였으나 취약점 존재로 없어짐
728x90
반응형