0

请我有以下联系表格的功能,但它显示以下错误“致命错误:调用未定义的函数:stripos() in”我该如何解决它

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()and 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 回答
0

stripos 是 PHP 5 的功能,需要升级。

于 2012-06-11T13:57:33.487 回答
0

stripos() 在 PHP 4 中不可用

手动的

脱衣舞

(PHP 5)

stripos — 查找字符串中第一次出现不区分大小写的子字符串的位置

手册中的一条注释显示了此代码,这可能会对您有所帮助:

if(!function_exists("stripos")){
    function stripos(  $str, $needle, $offset = 0  ){
        return strpos(  strtolower( $str ), strtolower( $needle ), $offset  );
    }/* endfunction stripos */
}/* endfunction exists stripos */

if(!function_exists("strripos")){
    function strripos(  $haystack, $needle, $offset = 0  ) {
        if(  !is_string( $needle )  )$needle = chr(  intval( $needle )  );
        if(  $offset < 0  ){
            $temp_cut = strrev(  substr( $haystack, 0, abs($offset) )  );
        }
        else{
            $temp_cut = strrev(    substr(   $haystack, 0, max(  ( strlen($haystack) - $offset ), 0  )   )    );
        }
        if(   (  $found = stripos( $temp_cut, strrev($needle) )  ) === FALSE   )return FALSE;
        $pos = (   strlen(  $haystack  ) - (  $found + $offset + strlen( $needle )  )   );
        return $pos;
    }/* endfunction strripos */
}/* endfunction exists strripos */ 
于 2012-06-11T13:58:32.197 回答
0

如前所述,它只是 PHP5 ......

但这是一个讨厌的电子邮件验证功能,试试这个!

function validateEmail($email)
{
    return(preg_match("/^([a-zA-Z0-9_\.\-+])+\@([a-zA-Z0-9\-])+(\.[a-zA-Z0-9]{2,7})+$/", $email));
}   
于 2012-06-11T14:02:18.170 回答