0

可能重复:
如何在 PHP 中将 ereg 表达式转换为 preg?
在 mail() 中使用的转义字符串

我正在尝试发送我的表格,但我收到此错误...

已弃用:函数 eregi() 已弃用

我尝试用 preg_match() 替换它,但没有运气。这是我的代码:

$all_valid = $name_valid = $email_valid = $comments_valid = true;

if (isset($_POST['submit'])) {  

    if ($_POST['name'] == '') {
        $all_valid = $name_valid = false;
    }

    if ($_POST['comments'] == '') {
        $all_valid = $comments_valid = false;
    }

    if (!$validator->check_email_address($_POST['email'])) {
        $all_valid = $email_valid = false;
    }

    if ($all_valid) {
        //  ####    NO PROBLEMS FOUND - PROCESS THE FORM DATA HERE
        $mail_to = 'cat30@hotmail.com'; //  recipient address
        $subject = "Email from website";    //  email message subject line
        $name = mysql_real_escape_string(trim($_POST['name'])); //  sanitize the name
        if (eregi("\r",$name) || eregi("\n",$name)){    //  avoid email header injection
            die();
        }
        $mail_from = mysql_real_escape_string(trim($_POST['email']));   //  sanitize their email address
        if (eregi("\r",$mail_from) || eregi("\n",$mail_from)){  //  avoid email header injection
            die();
        }
        $comments = htmlspecialchars(trim($_POST['comments'])); //  convert HTML characters into entities

        $headers = 'From: '. $mail_from. "\r\n";
        mail($mail_to, $subject, $comments, $headers);

        $response = '<h2>Thanks for contacting us, will get back to you soon</h2>';
    }

}
4

1 回答 1

1

它返回的值与 eregi 略有不同,但如果我正确阅读了您的代码,您应该能够使用 strpos() 函数来确定字符串中是否存在子字符串。Eregi 忽略大小写,因此您可能还必须将其与 strtolower($string) 调用结合使用。

像这样: if (strpos("\r",strtolower($name)) || strpos("\n",strtolower($name)))

于 2012-12-15T06:06:40.540 回答