반응형
Notice
Recent Posts
Recent Comments
Link
그럴 수도 있지
[PHP] strpos() Find a string (문자열 찾기) 본문
반응형
Syntax
strpos(string $haystack, string $needle, int $offset = 0): int | false
자바스크립트의 indexOf랑 비슷한 함수로 문자열이 있는지 판단하거나 문자열을 찾아 자를 때 사용한다.
Parameters
haystack : 탐색할 문자열
needle : 찾을 문자열(혹은 문자)
offset : 선택값이며, offset을 지정하면 haystack에서 해당 위치부터 문자열을 찾는다.
Return Values
위치를 정수로 반환하며, 문자열은 1부터가 아닌 0부터 시작한다. 찾는 문자열이 없을 경우 false를 반환한다.
Example 1
$msg = "Hello! welcome to my blog.";
echo "welcome의 위치는 ".strpos($msg, "welcome")."입니다.";
Result
welcome의 위치는 7입니다.
Example 2
$msg = "Hello! welcome to my blog.";
echo "e 위치는 ".strpos($msg, "e", 5)."입니다.";
Result
e 위치는 8입니다.
offset 을 설정할 경우 지정값 이후부터 찾아야 하므로, e의 위치는 1이 아닌 8을 반환한다.
Example 3
$msg = "Hello! welcome to my blog.";
if(strpos($msg, "blog")){
echo "blog 단어가 있음";
} else {
echo "blog 단어가 없음";
}
if(strpos($msg, "Debuck")){
echo "Debuck 단어가 있음";
} else {
echo "Debuck 단어가 없음";
}
if(strpos($msg, "Hello")){
echo "Hello 단어가 있음";
} else {
echo "Hello 단어가 없음";
}
Result
blog 단어가 있음
Debuck 단어가 없음
Hello 단어가 없음
여기서 이상한 점을 발견할 수 있는데 Hello 단어가 있는데도 불구하고 없다고 판단을 한다. 이유는 Hello의 위치가 0이므로 0을 반환하는데 0 = FALSE라는 점 때문에 IF문에는 FALSE로 판단해버리는 것이다.
그렇기 때문에 IF문을 사용할 경우에는 아래와 같이 IF(strpos(문자열, 찾는 문자열) !== FALSE) 로 판단해야 한다.
Example 4
if(strpos($msg, "Hello")!== FALSE){
echo "Hello 단어가 있음";
} else {
echo "Hello 단어가 없음";
}
Result
Hello 단어가 있음
반응형
'php' 카테고리의 다른 글
[PHP] phpexcel 날짜 오류 (+1일 되는 내용) (0) | 2022.07.05 |
---|