0

お問い合わせフォームに次の関数を用意してください。しかし、次のエラーが表示されます。

function checkEmail($vEmail) {   

                    $invalidChars ="/:,;" ; 
                    if(strlen($vEmail)<1) return false;                                         //Invalid Characters
                    $atPos = stripos($vEmail,"@",1);                                    //First Position of @
                    if ($atPos != false) $periodPos = stripos($vEmail,".", $atPos);         //If @ is not Found Null . position
                    for ($i=0; $i<strlen($invalidChars); $i++) {                            //Check for bad characters 
                        $badChar = substr($invalidChars,i,1);       //Pick 1
                        if(stripos($vEmail,$badChar,0) != false)    //If Found
                            return false;
                    }
                    if ($atPos == false)                            //If @ is not found
                        return false;       
                    if ($periodPos == "")                           //If . is Null
                        return false;
                    if (stripos($vEmail,"@@")!=false)               //If @@ is found
                        return false;
                    if (stripos($vEmail,"@.") != false)             //@.is found
                        return false;
                    if (stripos($vEmail,".@") !=  false)            //.@ is found
                        return false;

                    return true;    
                }
4

4 に答える 4

3

ドキュメントからわかるようstripos()に、PHP5にのみ存在します。とにかく、コードは大文字と小文字を区別せずにチェックする必要はありません。チェックするだけな. @ / : , ;のでstripos()strpos().

stripos()コードベースに独自のものを追加することもできます。これは、次のようになります (strtolower()とを使用function_exists()):

if(!function_exists("stripos")){
  function stripos($haystack, $needle, $offset = 0){
    return strpos(strtolower($haystack), strtolower($needle), $offset)
  }
}

stripos()これは非常に基本的な置換であり、すべてのケースで実数のように同じ結果が得られるとは限らないことに注意してください。基本的な使用には有効ですが、広範なテストは行っていません。

于 2012-06-11T14:00:43.113 に答える