2011-10-22 5 views
5

非常に助けていただければ幸いです。私のホストのサーバー側の更新により、コメントフォームに2つの検証エラーが発生しました。 preg_match()は次のように警告します:preg_match()[function.preg-match]:コンパイルに失敗しました:文字クラス内の[スクリプトの場所と行のエラー]のオフセット13の範囲が不正です - オフセット14PHP 5.2 preg_match()コンパイルエラー

またメールアドレスチェックでこれを行います。

if (preg_match('/[^a-zA-Z0-9_-.]/', $_POST['txtEmail'])) 

と被写体チェック:

if (preg_match('/[^a-zA-Z0-9:?-. ]/', $_POST['txtSubject'])) 

私はPHPに慣れていないんだが、カット&ペーストすることができます!私のウェブサイトのfrowey.comとOSのアップデートをホストした後にエラーを投げ始めたという私に連絡したコメントフォームです。前もって感謝します。

答えて

1
if (preg_match('/[^a-zA-Z0-9_\.-]/', $_POST['txtEmail'])) 

if (preg_match('/[^a-zA-Z0-9:\?\.-]/', $_POST['txtSubject'])) 
+0

ビッグ感謝を。私は今それをチェックし、あなたに結果を知らせるでしょう。 – mochj

+0

ソート済み!ありがとう。また、電子メールアドレスの検証を変更する必要があります。すべては今働く。再度、感謝します。 – mochj

9

-マイナスをエスケープする必要があります。エラーメッセージのヒントのように、文字クラスには特別な意味があります。マイナスの前にバックスラッシュを使用します。

preg_match('/[^a-zA-Z0-9_\-.]/' 

(また-は、文字グループの最初または最後のものになるかもしれませんね、それはその特殊機能を失う。)両方の回答のため

+0

大きな感謝。私は今それをチェックしている。 – mochj

+0

すべてが動作するようになりました。再度、感謝します。どちらの答えも非常に役に立ちました。とても有難い。 – mochj