개발/php

[php] strpos(), strrpos(), in_array() 특정 문자열 검색하기

반응형

 

strpos()와 strrpos() 함수는 strstr()과 유사한 방식으로 동작한다.

하지만 strpos()의 실행 속도가 더 빠르기 때문에 strstr()대신 strpos()의 사용을 권장한다고 한다.

 

문장이나 특정 변수에서 특정 문자가 있는지 체크하려면 strpos(), strrpos() 함수를 사용하면 된다.

strpos([대상 문자열], [조건 문자열])
strpos([대상 문자열], [조건 문자열], [검색시작위치(숫자)])
strrpos([대상 문자열], [조건 문자열])
strrpos([대상 문자열], [조건 문자열], [검색시작위치(숫자)])

둘의 차이는 strpos 함수는 영문자의 대소문자를 구별하여 검색한다. 영문자 대소문자를 구별하지 않고 검색하려면 strrpos()함수를 사용하면 된다.

 

예시

stropos(), strrpos()함수는 문장이나 특정 변수에 해당 문자가 포함되어있으면 해당 위치를 알려준다.

echo strpos('abcdefghijk','c')

결과값은 2

문자의 첫글자를 0부터 카운트해서 해당 문자열의 위치를 알려준다.

 

if문을 활용하여 특정문자가 있는지 여부를 체크해보려면 사용하면 아래와 같다.

$value = "abcdefghijk";

if (strpos($value,'c')) { 
//특정문자가 있는 경우
} else {
//그외
}

 

strpos는 해당 문자가 없다면 값을 반환하지 않기 때문에 false로 문자 여부를 체크할 수도 있다.

if (strpos($value,'c') == false) { 
//특정문자가 없는 경우
}

 

* 값에 찾으려는 문자가 여러개 있으면 가장 먼저 있는 위치를 반환한다.

 

 

 

in_array()

위의 stropos(), strrpos() 함수는 특정 문자(한글자)의 위치를 반환해주기 때문에 두글자 이상의 단어를 포함하는지 체크가 어렵다. 이 경우에는 in_array()함수를 사용하면 된다.

 

in_array("apple", $value) 함수는 배열에 해당 값이 있으면 1을 반환한다.

$value = array("apple", "banna", "grape", "peach");

if(in_array("apple", $value)) {
    echo "포함";
} else {
    echo "미포함";
}

 

 

 

 

 

 

 

 

반응형