2014-06-14 2 views
0

나는 많은 문제로 나를 능숙하게 처리하는 간단한 함수를 가졌습니다.부울을 반환하는 함수는 거짓 만 반환합니다.

function valid_mail($email) { 
    $atpointers = strstr($email, "@"); 
    $spacepointers = count(explode(" ", $email)); 
    $dotpointers = strstr($email, "."); 
    $ltpointers = strstr($email, "<"); 
    $gtpointers = strstr($email, ">"); 
    $illegalpts = $ltpointers + $gtpointers; 
    if($atpointers >= 2 || $dotpointers == 0 || strlen($email) <= 6 || $illegalpts >= 1) { return false; } else { return true; } 
} 

그리고 컨텍스트에서 호출 : 함수는

if(valid_mail($email) === false) { // Code } else { // Code } 

문제는 것은 분명히 그것은 단지 false를 반환합니다. 이것이 일어나는 이유에 대한 아이디어가 있습니까?

+5

'filter_var ($ email, FILTER_VALIDATE_EMAIL)'이이 모든 것을 대체 할 수 있습니다. –

+0

또한 어떤 전자 메일이 확인됩니까? 샘플 데이터를 제공 할 수 있습니까? – JakeGould

+0

함수 안에'$ atpointers = strstr ($ email, "@"); echo $ atpointers, '
'; 그리고 그것이 무엇을 반환하는지 확인하면 왜 false를 반환하는지에 대한 답을 얻을 수 있습니다. –

답변

0

strstr는 길이가 아닌 검사 할 문자열의 substr을 반환합니다. 대신 strpos를 사용하십시오.

관련 문제