在php4中的Stripos问题

时间:2012-06-11 13:54:59

标签: php php4

请为联系表单提供以下功能,但它显示以下错误“致命错误:调用未定义的函数:stripos()”如何解决

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 个答案:

答案 0 :(得分:3)

the documentation可以看出,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()。它对基本用法有效,但我没有做过广泛的测试。

答案 1 :(得分:0)

stripos是一个PHP 5函数,需要升级。

答案 2 :(得分:0)

在PHP 4中没有stripos()

manual

  

stripos函数

     

(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 */ 

答案 3 :(得分:0)

如上所述它只是PHP5 ......

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

function validateEmail($email)
{
    return(preg_match("/^([a-zA-Z0-9_\.\-+])+\@([a-zA-Z0-9\-])+(\.[a-zA-Z0-9]{2,7})+$/", $email));
}