📖
PHP strpos() vs preg_match() 의 차이

페이지 정보

본문

✅ strpos($video, '.m3u8') !== false
동작:
문자열에서 단순히 .m3u8 이라는 고정된 텍스트가 포함되어 있는지만 검사합니다.

속도:
매우 빠름. 정규표현식이 아니기 때문에 불필요한 오버헤드가 없음.

대소문자 구분:
기본적으로 strpos는 대소문자를 구분합니다.
예: .M3U8은 못 찾음.

➜ 대소문자 구분 없이 하고 싶으면 stripos() 사용![code]if (stripos($video, '.m3u8') !== false) { ... }
[/code]
✅ preg_match("/\.m3u8/i", $video)
동작:
정규식 패턴으로 검사합니다.
i 플래그가 있으므로 대소문자를 자동으로 구분하지 않음.

속도:
strpos보다 느립니다. 정규식 엔진을 쓰기 때문이에요.

유연성:
정규식이기 때문에 더 복잡한 패턴(예: 확장자가 .m3u8로 끝나야 한다 등)을 쉽게 검사할 수 있음.

✅ 예시 비교
$video -> strpos('.m3u8') -> stripos('.m3u8') -> preg_match("/\.m3u8/i")
test.M3U8 -> false -> true -> true
test.m3u8 -> true -> true -> true
test.m3u8?query=1 -> true -> true -> true

✅ 결론
단순 포함 여부만 체크 -> strpos (대소문자 상관 있으면 stripos)
대소문자 구분 없이 포함 여부 -> stripos
복잡한 패턴(끝나는지 등) 필요 -> preg_match

✅ 실전 추천 예
strpos/stripos: 빠르고 간단한 경우 (95% 상황에 충분)
preg_match: 확장자가 .m3u8로 끝나는지까지 엄격히 검사하려면[code]if (preg_match("/\.m3u8$/i", $video)) {
  // .m3u8로 끝날 때만
}[/code]
✅ $ 유무의 차이
"/\.m3u8/i" -> 어디에든 .m3u8 가 포함되어 있으면 true
"/\.m3u8$/i" -> .m3u8 로 문자열이 끝날 때만 true

✅ 예시 비교
$video -> /\.m3u8/i -> /\.m3u8$/i
test.m3u8 -> ✅ -> ✅
test.m3u8?query=123 -> ✅ -> ❌ (끝이 .m3u8 아님)
folder/test.m3u8 -> ✅ -> ✅
stream_m3u8_version -> ✅ -> ❌

✅ 결론
포함 여부만 검사 → $ 빼고: preg_match("/\.m3u8/i", $video)
확장자가 .m3u8로 끝나야 함 → $ 붙이고: preg_match("/\.m3u8$/i", $video)
즉,
✔️ $는 끝나야 한다는 보장이 필요할 때 쓰세요!
✔️ 단순 포함이면 없어도 무방!

댓글목록

등록된 댓글이 없습니다.

자료 목록
번호 제목 날짜
205
🫧
02:15
📖
🫧
07-08
203
🫧
07-01
202
🫧
06-28
201
🫧
06-09
200
🫧
06-02
199
🫧
05-23
198
🫧
05-23
197
🫧
05-23
196
🫧
05-23
195
🫧
05-22
194
🫧
05-22
193
🫧
05-22
192
🫧
05-22
191
🫧
05-21

🔍 검색

회사소개 개인정보처리방침 서비스이용약관
Copyright © rainbowgarden.shop All rights reserved.