私の質問は異なるかもしれませんが、私は本当に解決策を探しています。
PHPに$check
、文字列を含む変数があります。住所または郵便番号のいずれかです。変数に郵便番号または住所があるかどうかを確認するためにここで適用できるルールはありますか?
編集:このウェブサイトは英国向けです
ありがとう
私の質問は異なるかもしれませんが、私は本当に解決策を探しています。
PHPに$check
、文字列を含む変数があります。住所または郵便番号のいずれかです。変数に郵便番号または住所があるかどうかを確認するためにここで適用できるルールはありますか?
編集:このウェブサイトは英国向けです
ありがとう
非常に詳細なリンク:ここ
function IsPostcode($postcode)
{
$postcode = strtoupper(str_replace(' ','',$postcode));
if(preg_match("/^[A-Z]{1,2}[0-9]{2,3}[A-Z]{2}$/",$postcode) || preg_match("/^[A-Z]{1,2}[0-9]{1}[A-Z]{1}[0-9]{1}[A-Z]{2}$/",$postcode) || preg_match("/^GIR0[A-Z]{2}$/",$postcode))
return true;
else
return false;
}
使用する:
$e = "AB235RB";
if (IsPostcode($e))
print "Valid Post Code";
else
print "Invalid Post Code";
私はこれに基づいて英国の郵便番号バリデーターを書いたので、それが機能することを知っています:)
Marc Bが指摘したように、英国の郵便番号の英数字の品質のため、私の最初の答えは機能しません。その場合、preg_match
正規表現を郵便番号と一致させることをお勧めします。または、住所がその長さになることがないことが確実な場合は、strlen
オンに$check
して郵便番号の長さを探すことができます。
必要な正規表現についての良い議論のために、この質問を読むことをお勧めします。
単純な郵便番号(つまり、12345-1234とは異なる)の場合は、で確認できますis_numeric
。それはちょっとしたハックですが、あなたの目的に合うかもしれません。複雑なzipの場合でも、いつでもを使用str_replace
してを削除し-
、チェックすることができますis_numeric
。もちろん、これは、アドレスに文字/文字列の内容が含まれていて、完全に数値ではないことを前提としています。