2012-05-16 63 views
0
preg_match("/[\]/",'',$body); 

我使用的preg_match但我這裏有這個錯誤的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 = "[email protected]";  // GMAIL username 
        $mail->Password = "hinadk";  // GMAIL password 

        $mail->SetFrom('[email protected]', '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 = "[email protected]"; 
        $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

+0

您試圖匹配什麼?我喜歡[RegExr](http://gskinner.com/RegExr/)工具 – message

+0

我剛剛更新了 – fish40

回答

1

你正在逃避最後一個支架,但不是第一個。要匹配反斜槓,你可以這樣做:

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

從您的編輯,似乎您試圖從$body刪除反斜槓。在這種情況下,您需要使用preg_replace。然而,因爲你做一個簡單的搜索和替換,你會更好只使用str_replace

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

有eregi_replace(「[]」,'',$ body); 但我有另一個錯誤,因爲這個原因我把它改爲preg_match – fish40

+0

'eregi_'函數已被棄用,所以你不能使用這些。但是'preg_match'不能替代,只能搜索。因此,您應該使用'preg_replace'或'str_replace'。 – webbiedave

+0

對不起兄弟,我應該在這裏寫什麼preg_replace(「[]」,'',$ body)? – fish40

0

\用於轉義特殊字符,所以你逃避你的右括號另一個錯誤,你有一個左括號沒有關閉,主導到一個錯誤。

你想要完全匹配什麼,\角色?

0

中的preg_match的第三個參數是匹配數組,這樣你將覆蓋$體變量的值數組。 替代使用preg_replace而不是preg_match $ body = preg_replace(「/ [\] /」,'',$ body); 並在正則表達式中使用轉義