0
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に変更します

4

3 に答える 3

1

最後の角かっこをエスケープしていますが、最初の角かっこはエスケープしていません。バックスラッシュを一致させるには、次の操作を実行できます。

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

編集から、からバックスラッシュを削除しようとしているようです$body。この場合、preg_replaceを使用する必要があります。ただし、単純な検索と置換を行うため、str_replaceを使用する方がよいでしょう。

str_replace('\\', '', $body);
于 2012-05-16T19:41:12.767 に答える
0

\特殊文字をエスケープするために使用されるため、閉じ括弧をエスケープしていて、閉じブラケットのない開始ブラケットがあるため、エラーが発生します。

\キャラクター、正確に何を一致させたいですか?

于 2012-05-16T19:40:59.147 に答える
0

preg_matchの3番目のパラメーターはmatches配列です。このようにして、$body変数の値を配列で上書きします。preg_matchの代わりにpreg_replaceを使用して置き換えます$body= preg_replace( "/ [\] /"、''、$ body); 正規表現でエスケープを使用します

于 2012-05-16T19:48:36.787 に答える