人が間違った郵便番号形式を入力した場合や入力欄を残した場合、エラーが発生するようにしています。私はなぜそれが動作していないか把握しようとしています。助けてください!PHPが検証されないのはなぜですか?
<td>Postal Code</td>
<td>
<input type="text" id="postal_code" name="postal_code" value="<?php if($_POST['postal_code'] == null){ echo '';}else{echo $_POST['postal_code'];}?>"/>
</td>
<td class="error" colspan="2">
<?php
if(isset($_POST['send_bulkform']) && $_POST['postalcode'] != preg_match("[A\-Za\-z][0\-9][A\-Za\-z] [0\-9][A\-Za\-z][0\-9]",$_POST['postal_code']) || isset($_POST['send_studentform']) && $_POST['postalcode'] != preg_match("[A\-Za\-z][0\-9][A\-Za\-z] [0\-9][A\-Za\-z][0\-9]",$_POST['postal_code']))
{
echo "Required, ex. A1A 1A1.";
}
elseif(isset($_POST['send_bulkform']) && $_POST['postalcode'] == null || isset($_POST['send_studentform']) && $_POST['postalcode'] == null)
{
echo "Required, ex. A1A 1A1.";
}
?>
</td>
</tr>
まず、 'preg_match()'とその同僚は[デリミタ](http://php.net/manual/en/regexp.reference.delimiters.php)を必要とします。第二に、文字グループのダッシュをエスケープする必要はありません。 '[A \ -Z]'の代わりに '[A-Z]'を書いてください。 –
ところで:[世界中で使用するフォーマットが多すぎる](https://en.wikipedia.org/wiki/List_of_postal_codes)のように、郵便番号の有効性を確認することはおそらくお勧めできません。いくつかの国はいくつかのフォーマットを使用しています。 – feeela
これは正規表現とは何でしょうか? 'A'、' -'、 'Z'、' a'、 '-'、' z'を許します。次に、 '0'、' -'、または '9'のいずれかです。等 – chris85