PHP 문자열 포함여부 확인 방법 strpos, preg_match

2021-05-23 16:01

PHP의 문자열 포함 여부(ABCD 중 D가 들어있는지) 확인 방법

 

1. strpos 의 경우 문자열이 시작되는 위치를 정수로 반환하는 함수라는 점과 0 이외의 모든 정수값은 true로 취급하는 PHP의 특성을 이용한 것으로 일반적으로 의도대로 동작하긴 한다.

하지만 문자열이 전체문자열의 가장 앞쪽(ABCD 중 A)에 위치할 경우 strpos함수의 반환값은 0이 되고 PHP에서 0은 false가 나오기 때문에 들어있지 않다고 나온다.

 

if(strpos("ABCD","CD")){

//strpos의 return : 2 echo "포함";

}

else {

echo "미포함";

}

if(strpos("ABCD","ABC")){

//strpos의 return : 0 echo "포함";

}

else {

echo "미포함";

}

 

위 코드에서 첫번째 IF문은 전체문자열 "ABCD"에서 비교문자열 "CD"이 시작되는 위치는 2이다. PHP에서 0이외의 정수값은 모두 true이므로 첫번째 IF문의 결과는 "포함" 이다.

 

두번째 IF문은 전체문자열 "ABCD"에 비교문자열 "ABC"가 포함되어 있음에도 비교문자열의 시작위치는 0이므로 두번째 IF문의 결과는 "미포함."이다.

 

2. preg_match 정확하게 확인하려면 정규식을 이용하자.

 

if (preg_match('/AB/', ABCD)) {

    echo "포함";

} else {

    echo "미포함";

}

if (preg_match('/CD/', ABCD)) {

    echo "포함";

} else {

    echo "미포함";

}

 

preg_match 사용하면 문자열 포함여부를 정확하게 판단할 수 있고, 여러 상황에도 정확하게 활용할 수 있다.

  • 페이스북 공유하기
  • 트위터 공유하기
  • 구글 플러스 공유하기
  • 카카오스토리 공유하기
0개

  • 번호
    카테고리
    제목
    글쓴이
    날짜
    추천수
    조회수