본문 바로가기
코딩

[PHP] strpos() 문자열 포함 여부 및 문자열 위치 알아내기

by 우월한하루 2023. 1. 4.
728x90
반응형

 

 

 

코딩을 하다 보면 특정 문자열에서 내가 찾는 단어가 있는지 없는지 알아야 될 경우가 있습니다.

이럴 때 활용가능한 함수들이 여러 가지 있는데,

이 글에서는 그중에서도 처리 속도가 빠른 strpos() 함수에 대해서 알아보도록 하겠습니다.

 


 

반응형

 

 

strpos() 사용법

 

 strpos($long_text, $search_text , 3);

 

 

$long_text - 기존 문자열 

$search_text - 찾고 싶은 문자열

 

마지막 숫자는 검색을 시작할 위치입니다.

3이면 0123 해서 4번째부터 검색을 시작하는 것이 됩니다.

 

 

strpos()  예제

 

strpos()를 사용한 간단한 예제를 알아보겠습니다.

 

<?
	$long_text = "a A b B c C d D";
	$search_text = "b";

	$result = strpos($long_text, $search_text);
?>

 

 

이 예제는 $long_text의 문자열 중에서 소문자 b 가 어디 있는지 찾는 예제입니다.

result의 값은 어떻게 나오는지 확인해 보겠습니다.

 

결과값 출력화면

 

 

결과 값은 위와 같이 나옵니다.

strpos()는 대소문자 그리고 띄어쓰기를 구분하기 때문에 띄어쓰기 포함 4 가 결과 값이 되어 나옵니다.

또한 strpos()는 같은 문자열이 있다면 젤 앞에 있는 문자열의 위치만 반환합니다.

그러므로 같은 문자열이 두개 이상일 때는 사용하기 어렵습니다.

 

 

문자열 포함 유무 알아보기

 

$long_text = "abcdefg";
$search_text = "a";

$result = strpos($long_text, $search_text);
<div class="box">
    기존 문자열 : <span><?=$long_text?></span><br/>
    검색 할 문자열 : <span><?=$search_text?></span><br/>
    <? if($result === false) { ?>
        <span>'<?=$search_text?>'를 찾을 수 없습니다.</span>
    <? } else { ?>
        <span>해당 문자는 <?=$result+1?>번째 위치에 있습니다.</span>
    <? } ?>
</div>

 

 

위 예제에서 첫 번째에 있는 a를 찾게 되면 값은 0이 나오고 0은 논리적으로 false 취급이 되기 때문에,

"==" 연산자 대신 "===" 연산자를 사용하여 구분해 주어야 합니다.

 

이후 result값이 false를 반환하면 문자열이 포함되어 있지 않다는 뜻입니다.

false가 아니라면 몇 번째 위치에 있는지 보여주도록 하겠습니다.

 

문자열 위치 예제 결과 이미지

 

문자열이 없을 때 결과페이지

 

 

 

strpos()를 사용하여 문자열의 유무를 판별하고 그에 따라 결과 페이지가 달라지는 것을 확인할 수 있습니다.

위의 예제 처럼 특정 문자열이 있을 때, 해당 문자열을 다른 문자로 대체한다던지,

혹은 해당 문자열이 있을 때 특정 이벤트를 실행하는 코드를 작성해 볼 수 있겠습니다.

 

728x90

 


 

결론

 

 

이 글을 통해서 간단하게 문자열 포함 여부를 확인하는 방법을 알아보았습니다.

strpos()를 활용하여 결괏값을 처리할 때 필수적으로 들어가야 하는 내용이 들어있는지 아닌지 체크하고,

필수적으로 포함되어야 할 문자열을 추가해 주거나, 해당 문자열을 포함하여 들어온 사용자는 다른 페이지로 이동시키거나,

사용할 수 없는 문자열을 구분해 내는 등 여러 가지로 활용이 가능한 유용한 함수 중 하나입니다.

이 글을 통해서 strpos()의 개념과 활용방법에 대해 알고, 더욱 익숙해지는데 도움 되는 글이었길 바랍니다.

 

728x90
반응형

댓글