문자열에서 특정한 문자(열)이 있는지 여부와 시작 위치를 가져오는 함수(strpos, stripos등)를 사용하다 보면
Warning: strpos(): Offset not contained in string in ~ 라는 경고가 나올때가 있습니다.
위 경고문은 "offset인수는 문자를 포함할 수 없다." 라는 것인데
이 인수를 숫자를 넣었는데도 이러한 경고가 발생할때가 있습니다.
따라서 오늘은 어떠한 상황에서 이러한 경고가 나오는지에 대해 포스팅을 하겠습니다.
아래의 코드는 정상적인 코드입니다.
(코드는 Syntax Highlighter가 적용되어 모바일에서는 안보일 수 있습니다.)
$search = "op"; $desc = "abcdefghijklmnopqrstuvwxyz"; $offset = 0; $pos = strpos($desc, $search, $offset); if($pos === false) echo"not found!"; else echo"found! pos : $pos";
위 코드를 실행시키면 "found! pos : 14"란 결과가 표시됩니다.
다음 코드는 실제로 offset인수에 문자열을 넣어봤습니다.
(코드는 Syntax Highlighter가 적용되어 모바일에서는 안보일 수 있습니다.)
$search = "op"; $desc = "abcdefghijklmnopqrstuvwxyz"; $offset = "a"; $pos = strpos($desc, $search, $offset); if($pos === false) echo"not found!"; else echo"found! pos : $pos";
그런데 이 코드를 실행시면 다른 경고가 발생합니다.
"Warning: strpos() expects parameter 3 to be long, string given in ~"
다시 코드를 수정해 보겠습니다. 이번엔 offset값을 -1로 지정하였습니다.
(코드는 Syntax Highlighter가 적용되어 모바일에서는 안보일 수 있습니다.)
$search = "op"; $desc = "abcdefghijklmnopqrstuvwxyz"; $offset = -1; $pos = strpos($desc, $search, $offset); if($pos === false) echo"not found!"; else echo"found! pos : $pos";
이번엔 "Warning: strpos(): Offset not contained in string in ~ " 라는 경고가 발생합니다.
1. offset 인수에 음수를 사용하면 해당 메시지가 발생합니다.
이번에는 문자열을 찾는 대상인 $desc의 값을 변경해보겠습니다.
(코드는 Syntax Highlighter가 적용되어 모바일에서는 안보일 수 있습니다.)
$search = "op"; $desc = ""; $offset = 0; $pos = strpos($desc, $search, $offset); if($pos === false) echo"not found!"; else echo"found! pos : $pos";
특별한 경고없이 "not found!"가 표시됩니다.
다음 코드를 보시겠습니다.
(코드는 Syntax Highlighter가 적용되어 모바일에서는 안보일 수 있습니다.)
$search = "op"; $desc = ""; $offset = 2; $pos = strpos($desc, $search, $offset); if($pos === false) echo"not found!"; else echo"found! pos : $pos";
이번에도 "Warning: strpos(): Offset not contained in string in ~ " 라는 경고가 발생합니다.
2. 찾는 대상의 값이 NULL일때 offset값을 0이 아닌 다른값이 주어지면 해당 메시지가 발생합니다.
$search 의 값은 별도로 테스트 해보지 않았기 때문에 다른 경우가 추가로 있을 수도 있겠지만
위의 경우들을 살펴보시면 해당 메시지가 나왔을때 어디를 점검해봐야 하는지 어느정도는 알 수 있을것 입니다.
'PHP' 카테고리의 다른 글
[PHP] 대용량 텍스트 파일 자르기 (0) | 2015.02.12 |
---|---|
[PHP] 배열 중간에 추가하기 (0) | 2015.02.05 |
PHP에서 배열을 정렬하는 방법 (0) | 2015.02.02 |
PHP에서 배열에 값이 포함되어 있는지 여부와 해당 인덱스 가져오기 (0) | 2015.01.28 |
PHP 서버 CPU 사용 정보 가져오기 (0) | 2015.01.20 |