💻 자주 쓰는 PHP 함수

[PHP 함수] strpos()로 문자열 찾기

rhandy 2025. 3. 20. 18:10
728x90

PHP에서 문자열을 다룰 때 특정 문자열이 어디에 위치하는지 찾는 기능이 필요할 때가 많습니다.
예를 들어, 사용자가 입력한 텍스트에서 특정 키워드를 찾거나, URL에서 특정 문자열이 포함되어 있는지 확인하는 경우 유용하게 사용됩니다.

이러한 기능을 수행하는 대표적인 함수가 바로 strpos() 입니다.

이 글에서는 PHP strpos() 함수의 사용법, 다양한 활용 예제, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다. 


1. strpos() 함수란?

기본 문법

int|false strpos(string $haystack, string $needle, int $offset = 0)

매개변수 설명

매개변수 설명

$haystack 검색할 대상 문자열
$needle 찾을 문자열
$offset (선택) 검색을 시작할 위치 (기본값: 0)

반환값

  • $needle이 $haystack에서 처음 등장하는 위치(인덱스)를 반환 (0부터 시작)
  • $needle이 없으면 false 반환
  • $offset을 설정하면 해당 위치 이후부터 검색

2. strpos() 기본 예제

🔹 문자열에서 특정 단어 찾기

<?php
$text = "Hello, PHP World!";
$pos = strpos($text, "PHP");
echo $pos;
?>

🔹 실행 결과

7

➡ "PHP"는 "Hello, PHP World!"에서 **7번째 인덱스(0부터 시작)**에 있습니다.


🔹 특정 위치 이후부터 검색 ($offset 사용)

<?php
$text = "PHP is fun, and PHP is powerful!";
$pos = strpos($text, "PHP", 10);
echo $pos;
?>

🔹 실행 결과

17

➡ "PHP"를 10번째 문자 이후부터 검색하면, 17번째 위치에 있는 "PHP"를 찾습니다.


🔹 문자열이 없을 때 (false 반환)

<?php
$text = "Hello, PHP!";
$pos = strpos($text, "JavaScript");

if ($pos === false) {
    echo "문자열을 찾을 수 없습니다.";
} else {
    echo "문자열 위치: " . $pos;
}
?>

🔹 실행 결과

문자열을 찾을 수 없습니다.

➡ "JavaScript"는 "Hello, PHP!"에 없으므로 false를 반환합니다.


3. strpos()의 실용적인 활용 예제

🔹 1) 특정 문자열 포함 여부 확인

<?php
$text = "PHP is awesome!";
if (strpos($text, "PHP") !== false) {
    echo "PHP가 포함되어 있습니다.";
} else {
    echo "PHP가 포함되지 않았습니다.";
}
?>

➡ strpos()의 반환값이 false가 아니라면 문자열이 포함되어 있는 것입니다.


🔹 2) 이메일 유효성 검사 (@ 포함 여부)

<?php
$email = "user@example.com";

if (strpos($email, "@") !== false) {
    echo "올바른 이메일 형식입니다.";
} else {
    echo "잘못된 이메일 형식입니다.";
}
?>

➡ 이메일 주소는 반드시 @가 포함되어야 하므로, 이를 확인할 수 있습니다.


🔹 3) URL에서 특정 도메인 확인

https://example.com/page";

if (strpos($url, "example.com") !== false) {
    echo "example.com 도메인입니다.";
} else {
    echo "다른 도메인입니다.";
}
?>

➡ 특정 도메인이 포함된 URL인지 검사할 수 있습니다.


🔹 4) 키워드가 포함된 문장 추출

<?php
$text = "PHP is great, and PHP is widely used.";
$keyword = "PHP";

$pos = strpos($text, $keyword);
if ($pos !== false) {
    echo substr($text, $pos, 20) . "..."; // 키워드 이후 20자 출력
}
?>

➡ "PHP"가 등장하는 위치부터 20자까지만 미리보기 형태로 출력할 수 있습니다.


🔹 5) 특정 구분자로 문자열 나누기

<?php
$text = "apple,banana,grape";
$commaPos = strpos($text, ",");
$firstWord = substr($text, 0, $commaPos);

echo $firstWord;
?>

🔹 실행 결과

apple

➡ 첫 번째 쉼표 , 이전의 단어를 추출할 수 있습니다.


4. strpos()와 다른 문자열 검색 함수 비교

함수 설명

strpos() 문자열에서 특정 문자열의 첫 번째 위치 반환
strrpos() 문자열에서 특정 문자열의 마지막 위치 반환
stripos() 대소문자 구분 없이 문자열 찾기
strstr() 특정 문자열 이후의 모든 부분 반환

5. strpos() 사용 시 주의할 점

반환값이 false일 때 정확한 비교 필요

<?php
$text = "PHP is great!";
$pos = strpos($text, "PHP");

if ($pos === false) {
    echo "찾을 수 없음";
} else {
    echo "위치: " . $pos;
}
?>

➡ if ($pos == false)로 비교하면 $pos가 0일 경우에도 false로 판별될 수 있음.
반드시 === false로 비교해야 정확한 결과를 얻을 수 있음.


대소문자 구분 (stripos() 사용)

<?php
$text = "Hello, PHP!";
$pos = stripos($text, "php"); // 대소문자 무시
echo $pos; // 7
?>

➡ stripos()는 대소문자를 무시하고 검색할 수 있음.


strpos()는 여러 개의 동일한 문자열 중 첫 번째 위치만 찾음

<?php
$text = "PHP is fun, and PHP is powerful!";
$pos = strpos($text, "PHP");
echo $pos; // 0
?>

➡ "PHP"가 여러 번 등장해도 첫 번째 위치(0)만 반환.
모든 위치를 찾으려면 preg_match_all()을 사용해야 함.


멀티바이트 문자열(한글) 처리 (mb_strpos() 사용)

<?php
$text = "안녕하세요, PHP!";
$pos = mb_strpos($text, "PHP", 0, "UTF-8");
echo $pos;
?>

➡ 한글 등 멀티바이트 문자열을 검색하려면 mb_strpos() 사용.


6. strpos() 활용 팁

URL 검사 시 정규식과 함께 사용

if (strpos($url, "https://") === 0) {
    echo "보안 연결(HTTPS) 사용 중";
}

➡ URL이 https://로 시작하는지 확인 가능.

특정 단어가 포함된 경우 강조 표시

<?php
$text = "PHP is awesome!";
$keyword = "PHP";
echo str_replace($keyword, "<b>$keyword</b>", $text);
?>

➡ 특정 단어를 굵게 표시하여 강조 가능.


7. 결론

PHP의 strpos() 함수는 문자열에서 특정 문자열의 위치를 찾는 필수적인 함수입니다.
이를 활용하면 이메일 유효성 검사, URL 검사, 키워드 검색, 문자열 추출 등 다양한 작업을 효율적으로 수행할 수 있습니다.

 

📌 핵심 요약
✔️ strpos()는 문자열 내 특정 문자열의 첫 번째 위치를 반환
✔️ 대소문자 구분 없이 검색하려면 stripos() 사용
✔️ 한글 같은 멀티바이트 문자열은 mb_strpos() 사용
✔️ 반환값이 false일 때 === false로 비교해야 정확한 결과 확인 가능

이제 strpos()를 활용하여 더욱 효율적인 PHP 개발을 해보세요! 🚀

💡 도움이 되셨다면 공유해주세요! 😊

 

728x90