2011-09-13 7 views
1

私はPhpサニタイズと検証フィルタで使用していますが、いくつかのルールを追加するには問題があります。いくつかの文字例外を含むPhpサニタイズと検証フォーム

if ($_POST['ccp_n'] != "") { 
      $ccp = filter_var($_POST['ccp_n'], FILTER_SANITIZE_NUMBER_INT); 
      if (!filter_var($ccp, FILTER_VALIDATE_INT)) { 
       $errors .= 'Insert a valid code.<br/>'; 
      } 
     } else { 
      $errors .= 'Insert a code.<br/>'; 
     } 

は私が最小と最大文字数(14-15)を追加する必要があると私は、この文字受け入れるようにしたい - 【選択正確な配列は、0000-0000-0000(最後の4桁の数字である(またはスペース)おかげ

+2

「何かのように」は少し曖昧です。文字列内の可変長とハイフンの位置をもう少し定義します。ハイフンのほかに数字だけを許可する必要がありますか? – stema

+0

はい、数字のみです。正確なシーケンスは0000-0000-0000です(最後の4桁も5になる可能性があります) – Sbml

+0

私の回答が更新されました – stema

答えて

2

あなたはpreg_matchとAを使用することができますpply正規表現。

preg_match (string $pattern , string $TestString)See here in detail

パターンが問題です。許可されるものを詳細に定義する必要があります。

例えば、パターン:

'~^\d{4}-\d{4}-\d{4,5}$~D' 

が開始^から端$に文字列全体であろう。 4桁、ハイフン、4桁、ハイフン、4〜5桁。

を参照してくださいそれhere on Regexr

更新:

私は、最後に別段$だけではなく、文字列の末尾に一致するだけでなく、前に改行を最後までD修飾子を追加しました文字列内の文字。 See here for php modifiers in detail

+1

'/ D'修飾子を忘れないでください – Geert

+0

@Geert、何か新しいことを教えていただきありがとうございます。 。 – stema

+0

この例では、私の例に適用すると、この正規表現でFILTER_VALIDATE_REGEXPを使用します。 – Sbml

0

preg_match()で正規表現を使用してください。また、あなたはまた、フォーマットに従って文字列からの入力を解析するsscanf()を使用することができます5あまりに

である可能性があります。

関連する問題