请为联系表单提供以下功能,但它显示以下错误“致命错误:调用未定义的函数: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;
}
答案 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()
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));
}