테스트 사이트 - 개발 중인 베타 버전입니다

유용한 함수 strpos

· 13년 전 · 727 · 12
strpos — Find position of first occurrence of a string
http://kr.php.net/manual/en/function.strpos.php

원래 문자열에서 주어진 문자열이 처음으로 발견되는 곳의 포지션(위치)를 반환 합니다.
포지션은 0 부터 시작합니다.

만약, 주어진 문자열을 찾을수 없다면 false 를 반환하므로 유의 해야 합니다.

아래와 같이 사용할 경우
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);

if (empty($pos)) 나 if (!$pos) 나 if ($pos == false) 로써 구분하는 것은 잘못된 것입니다.
앞에서도 설명했듯이 포지션은 0 부터 시작하기 때문입니다.

따라서
if ($pos === false) 와 같이 사용하여야 합니다.



쓰이는 용도는 다양하게 쓸수 있겠지만
가장 많이 쓰는 케이스 중에 하나가
email 주소 에서 @이가 포함되었는지 여부를 확인하거나
@를 기준으로 이메일 아이디와 이메일 서버를 뽑을때 입니다.

$email = 'abc@gmail.com';
$find_a   = '@';
$first_posistion = strpos($email, $find_a);

if ($first_posistion === false){//@를 찾을수 없음

    echo $email . ' 에서 @를 찾을수 없습니다.';
}
else {//@를 찾음

    $email_id = substr($email, 0, $first_posistion);
    $email_server = substr($email, $first_posistion + 1);

    echo '이메일아이디 : ' . $email_id;
    echo '<br />';
    echo '이메일서버 : ' . $email_server;
}

물론 다른 방법 으로도 이메일아이디와 이메일 서버를 가져오는 방법은 많습니다.

list($email_id, $email_server) = explode('@', $email);


용도에 따라 쓰는 방법이 다르겟지만
단순하게 특정 문자열의 포함 여부나 그 문자열이 처음으로 나타나는 포지션을 알고자 할때 아주 유용한 함수 입니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 12개

제가 전에 strpos 를 사용하면서 if ($pos == false) 이런식으로 코딩했다가 제대로 작동되지 않아서
오류 찾느라 애를 먹은적이 있었습니다. 유창화님 말씀대로 if ($pos === false) 와 같이 사용했어야 했더라구요. 경력 1년정도 되었을때 strpos 사용했다가 아주 애를 먹었었죠.
지금도 strpos 는 늘 기억하고 있습니다.
좋은내용입니다.

게시글 목록

번호 제목
3182
3171
3165
3163
14999
14998
14991
14984
14982
14979
14978
14977
3155
14976
14963
14960
14957
3151
3143
14951
3135
3132
14948
14941
29815
14939
14936
14935
3119
3113
14933
14929
3110
14928
14923
14921
3091
3087
3078
26068
3067
24252
14918
3061
3059
3053
14915
3049
14912
14911
14909
3040
3033
3027
3022
14908
24246
14905
3015
14904
14899
3007
14884
24241
3001
2997
14880
2991
2984
14879
2975
24232
14872
2970
24231
2967
2958
14864
2952
14858
24230
14850
2950
14848
14846
14845
14839
2944
2932
14833
14832
14830
2927
14826
26056
2921
2911
14824
2906
2889