티스토리 뷰
PHP를 다루다 보면 문자열에 특정 단어가 포함되어 있는지 확인해야 하는 경우가 자주 발생합니다. 예를 들어, 제품 키워드에 "별도"라는 단어가 들어 있는지 확인하고, 조건에 따라 다른 값을 처리해야 하는 상황이 있을 수 있습니다. 오늘은 PHP의 유용한 함수인 strpos()를 활용해 이러한 문제를 해결하는 방법을 알아보겠습니다.
문제 상황
예를 들어, 다음과 같은 코드가 있다고 가정해 보겠습니다.
$material = ($key == '⑥별도마감') ? $GuidrailExtraFinish : $material;
이 코드는 $key가 '⑥별도마감'과 정확히 일치할 때만 $material 값을 변경하도록 작성되었습니다. 하지만 실제로는 '별도'라는 단어만 포함되어도 같은 처리가 필요할 수 있습니다. 예를 들어, $key가 '별도작업', '별도지원', '별도비용'처럼 다양한 형태로 주어질 수 있겠죠.
이럴 때 어떻게 하면 $key에 "별도"라는 단어가 포함되어 있는지 확인할 수 있을까요?
PHP에서 문자열 포함 여부를 확인하는 방법
PHP에서는 strpos() 함수를 사용하여 문자열 내 특정 단어가 포함되어 있는지 확인할 수 있습니다. 이 함수는 매우 직관적이고 사용법도 간단합니다. strpos() 함수는 아래와 같은 방식으로 동작합니다.
- 구문:
- 문자열: 검색 대상이 되는 문자열입니다.
- 찾을_문자열: 검색하고자 하는 특정 단어 또는 문자열입니다.
- strpos(문자열, 찾을_문자열)
- 반환값:
- 찾을 문자열이 포함되어 있으면 해당 문자열이 시작되는 위치(0부터 시작하는 정수)를 반환합니다.
- 문자열이 포함되어 있지 않으면 false를 반환합니다.
실전 코드: "별도" 포함 여부 확인하기
앞서 본 코드를 strpos()로 개선하면 아래와 같이 작성할 수 있습니다.
$material = (strpos($key, '별도') !== false) ? $GuidrailExtraFinish : $material;
위 코드는 $key에 "별도"라는 단어가 포함되어 있으면 $GuidrailExtraFinish 값을 $material에 할당하고, 포함되지 않으면 기존 $material 값을 유지합니다.
코드의 핵심 포인트
- strpos()의 반환값 처리:
- strpos()는 문자열이 처음 등장하는 위치를 반환합니다. 위치값은 0부터 시작하므로, 단순히 if (strpos($key, '별도'))로 확인하면 문자열의 첫 번째 위치(0)에 "별도"가 있을 경우 조건이 거짓으로 평가됩니다.
- 따라서 반드시 **!== false**를 사용하여 반환값이 false인지 확인해야 합니다.
- 조건문 활용:
삼항 연산자를 사용하여 간결하게 표현했습니다. 상황에 따라 if 조건문으로도 작성할 수 있습니다. - if (strpos($key, '별도') !== false) { $material = $GuidrailExtraFinish; }
왜 strpos()를 선택해야 할까?
PHP에서 문자열 검색을 위한 다른 함수들도 있지만, strpos()는 아래와 같은 이유로 가장 널리 사용됩니다.
- 속도: 단순한 문자열 검색에서는 strpos()가 가장 빠르게 작동합니다.
- 간결함: 반환값을 활용한 조건 검사가 직관적이고 코드가 짧아집니다.
- 유연성: 부분 문자열 검색뿐만 아니라 위치 확인까지 가능해 다양한 상황에 활용할 수 있습니다.
문자열 포함 여부 확인의 다른 활용 사례
"별도"를 포함한 키를 처리하는 것 외에도 strpos()는 다양한 시나리오에서 활용될 수 있습니다.
- 사용자 입력 검증:
특정 금지어(예: 욕설)가 포함된 문자열을 필터링하는 데 유용합니다. - if (strpos($comment, '금지어') !== false) { echo "댓글에 금지어가 포함되어 있습니다."; }
- URL 파라미터 확인:
URL에 특정 키워드가 포함되어 있는지 확인할 때도 유용합니다. - if (strpos($_SERVER['REQUEST_URI'], 'admin') !== false) { echo "관리자 페이지입니다."; }
- 파일 형식 검사:
업로드된 파일 이름에 확장자가 포함되어 있는지 확인할 수 있습니다. - if (strpos($filename, '.jpg') !== false) { echo "이미지 파일입니다."; }
주의해야 할 점
strpos()를 사용할 때 아래 사항들을 유념하세요.
- 대소문자 구분:
기본적으로 strpos()는 대소문자를 구분합니다. 대소문자를 무시하려면 stripos()를 사용하세요. - if (stripos($key, '별도') !== false) { // 대소문자 무시하고 검색 }
- 멀티바이트 문자열:
한글과 같은 멀티바이트 문자열에서는 mb_strpos()를 사용하는 것이 더 안전합니다. - if (mb_strpos($key, '별도', 0, 'UTF-8') !== false) { // 멀티바이트 문자열 검색 }
PHP에서 strpos()는 문자열 처리에 있어 없어서는 안 될 중요한 함수 중 하나입니다. 특히 "별도"처럼 특정 단어의 포함 여부를 조건으로 처리해야 할 때, 코드의 가독성과 효율성을 모두 높일 수 있습니다. 위 예제와 설명을 바탕으로 strpos()를 다양하게 활용해 보세요.
'IT tech Coding > php' 카테고리의 다른 글
PHP에서 효율적인 검색 쿼리 작성법: 특정 아이템과 스펙 검색하기 (0) | 2025.01.21 |
---|---|
PHP 리팩토링으로 웹 애플리케이션 효율 높이기 (0) | 2025.01.17 |
날짜 계산 쉽게 하기 - PHP로 전전달의 29일 구하기 (0) | 2025.01.14 |
PHP로 Radio 버튼과 검색 필드를 연동하여 동적 검색 구현하기 (0) | 2025.01.02 |
PHP에서 한 자리 숫자를 두 자리로 변환하기: 실용적인 가이드 (0) | 2025.01.02 |
- Total
- Today
- Yesterday
- 티스토리챌린지
- json파일편하게보는법
- 구글드라이브API
- chatGPT3.5파이썬버전
- 테크에능한여성
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- 프로그래머생활
- json파일형태보기
- 효율적코딩방법
- 엑셀보호
- 코딩효율성
- 엑셀셀보호
- 스크립트작성기초
- #InstallForge
- 코딩튜토리얼
- sql문장 날짜계산
- 오토핫키가이드
- 뫄프로그래밍
- 파이썬코드줄바꿈방법
- 캐드자동작도
- ajax오류메시지
- Bootstrap 5
- 오블완
- 엑셀입력보호
- isset을 적용해야 하는 이유
- General error: 2031
- #프로그램설치
- #파이썬패키징
- 도면자동생성
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |