Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP로 문자열에 특수 문자가 포함되어 있는지 확인하는 방법

입력값 검증이나 보안 처리를 할 때 문자열에 특수 문자가 포함되어 있는지 확인해야 하는 경우가 자주 있습니다. 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"가 출력됩니다.

참고 사항

정규 표현식 패턴에 새로운 특수 문자를 추가하고 싶다면 대괄호 [] 안에 해당 문자를 추가하기만 하면 됩니다. 또한 실무에서는 입력값 검증 시 이러한 방식을 활용하여 비밀번호 복잡도 검사나 폼 데이터 유효성 검사 등에 응용할 수 있습니다.