preg_match错误消息

时间:2012-05-16 19:38:41

标签: php

preg_match("/[\]/",'',$body);

我使用preg_match,但我在这里有这个错误

对于偏移量为3的字符类,

编译失败:缺少终止]

这里有什么问题我找不到它

$email_message = "Form details below.\n\n";

                    function clean_string($string) {
                        $bad = array("content-type","bcc:","to:","cc:","href");
                        return str_replace($bad,"",$string);
                    }

                    $email_message .= "Full Name: ".clean_string($_POST['full_name'])."\n";
                    $email_message .= "Email: ".clean_string($_POST['email'])."\n";
                    $email_message .= "Telephone number: ".clean_string($_POST['telephone'])."\n";
                    $email_message .= "Message: ".clean_string($_POST['comments'])."\n";


                    $mail             = new PHPMailer();
                    $body             = $email_message;
                    $body             = str_replace('\\', '', $body);

                    $mail->IsSMTP(); // telling the class to use SMTP
                    $mail->SMTPAuth   = true;                       // enable SMTP authentication
                    $mail->SMTPSecure = "ssl";                      // sets the prefix to the servier
                    $mail->Host       = "smtp.gmail.com";           // sets GMAIL as the SMTP server
                    $mail->Port       = 465;                        // set the SMTP port for the GMAIL server
                    $mail->Username   = "hanem@gmail.com";      // GMAIL username
                    $mail->Password   = "hinadk";       // GMAIL password

                    $mail->SetFrom('from-email@domain.com', 'First Last');

                    $mail->Subject    = "Imperia";

                    $mail->AltBody    = "To view the message, please use an HTML compatidble email viewer!"; // optional, comment out and test

                    $mail->MsgHTML($body);

                    $address = "hanem@gmail.com";
                    $mail->AddAddress($address, "To Name");

                    if(!$mail->Send()) {

                        echo "<font color='red'> Message error </font>". $mail->ErrorInfo;
                    } else {
                        echo "<font color='red'> Message sent </font>";
                    } 

有eregi_replace(“[]”,'',$ body);

但由于这个原因,我有另一个错误,我将其更改为preg_match

3 个答案:

答案 0 :(得分:1)

你是逃离最后一个支架但不是第一个支架。要匹配反斜杠,您可以执行以下操作:

preg_match('/\\\\/', '', $body);

在您的编辑中,您似乎正在尝试从$body中删除反斜杠。在这种情况下,您需要使用preg_replace。但是,由于您进行简单的搜索和替换,您最好只使用str_replace

str_replace('\\', '', $body);

答案 1 :(得分:0)

\用于转义特殊字符,因此您正在转义结束括号,并且您有一个没有关闭括号的左括号,导致错误。

您想要完全匹配的是什么,\字符?

答案 2 :(得分:0)

preg_match的第三个参数是matches数组,这样你就可以用数组覆盖$ body变量的值。 替换使用preg_replace而不是preg_match $ body = preg_replace(“/ [\] /”,'',$ body); 并在正则表达式中使用转义