입력값 검증이나 보안 처리를 할 때 문자열에 특수 문자가 포함되어 있는지 확인해야 하는 경우가 자주 있습니다. PHP에서는 preg_match() 함수와 정규 표현식을 활용하면 간단하게 이를 구현할 수 있습니다. 아래 예제 코드를 살펴보겠습니다.
예제 코드
<?php
function check_string($my_string){
$regex = preg_match('[@_!#$%^&*()<>?/|}{~:]', $my_string);
if($regex)
print("String has been accepted");
else
print("String has not been accepted");
}
$my_string = 'This_is_$_sample!';
check_string($my_string);
?>실행 결과
String has not been accepted
코드 설명
위 코드의 동작 원리를 단계별로 살펴보겠습니다.
먼저 check_string이라는 함수를 정의합니다. 이 함수는 매개변수로 하나의 문자열을 전달받습니다.
$my_string = 'This_is_$_sample!';
함수 내부에서는 정규 표현식을 사용하여 문자열에 특수 문자가 존재하는지 검사합니다. 패턴 [@_!#$%^&*()<>?/|}{~:]은 확인 대상이 되는 특수 문자들을 나열한 것으로, preg_match() 함수는 해당 패턴과 일치하는 문자가 발견되면 1을, 일치하지 않으면 0을 반환합니다.
function check_string($my_string){
$regex = preg_match('[@_!#$%^&*()<>?/|}{~:]', $my_string);
if($regex)
print("String has been accepted");
else
print("String has not been accepted");
}검사 결과 특수 문자가 발견되면 조건문에 의해 "String has been accepted"라는 메시지가 출력되고, 그렇지 않으면 "String has not been accepted"가 출력됩니다.
함수 외부에서는 검사할 문자열을 정의한 뒤, 해당 문자열을 인자로 전달하며 함수를 호출합니다. 위 예제에서 사용된 문자열에는 $와 !라는 특수 문자가 포함되어 있으므로, 실행 결과로 "String has not been accepted"가 출력됩니다.
참고 사항
정규 표현식 패턴에 새로운 특수 문자를 추가하고 싶다면 대괄호 [] 안에 해당 문자를 추가하기만 하면 됩니다. 또한 실무에서는 입력값 검증 시 이러한 방식을 활용하여 비밀번호 복잡도 검사나 폼 데이터 유효성 검사 등에 응용할 수 있습니다.