用于使用preg_match验证AU邮政编码的PHP代码

时间:2015-07-01 02:05:34

标签: php

您好我需要验证澳大利亚邮政编码长度为4位数。因此我使用preg_match编写了PHP代码,但它对我不起作用。你能告诉我为什么我的代码不能正常工作吗?这是我的PHP代码。

$value=(explode(",",$_POST['search']));
$value = preg_split('/[0-9]+\./', $_POST['search'], -1, PREG_SPLIT_NO_EMPTY);


if (empty($value))
{
echo "<p >Please type your postcode</p>";
//This condition work


}


else if (preg_match('(^[0-9]{4}$)',$value))
{
//This condition is not working
echo "The post code must be a 4-digit number.";
}

else 
{
//This condition working
$json = file_get_contents('http://www.example/API?pcode='.$value[0].''); 

2 个答案:

答案 0 :(得分:1)

直到你回答,我采用这种方法:

<?php
$_POST['search'] = '1234'; //used for testing
$post_code = $_POST['search'];


if (empty($post_code)){
    echo "<p>Please type your postcode</p>";
}else if (!preg_match('#[0-9]{4}#',$post_code)){
    echo "The post code must be a 4-digit number.";
}else{
    $json = file_get_contents("http://www.example/API?pcode=$post_code");
} 

答案 1 :(得分:0)

检查Wikipedia中的澳大利亚邮政编码公式->

ACT:0200-0299和2600-2639。

NSW:1000-1999、2000-2599和2640-2914。

NT:0900-0999和0800-0899。

QLD:9000-9999和4000-4999。

SA:5000-5999。

TAS:7800-7999和7000-7499。

VIC:8000-8999和3000-3999。

WA:6800-6999和6000-6799

正则表达式:^(0 [289] [0-9] {2})|([1345689] [0-9] {3})|(2 [0-8] [0-9] {2 })|(290 [0-9])|(291 [0-4])|(7 [0-4] [0-9] {2})|(7 [8-9] [0-9] {2})$

通过:0200 ||| 7312 ||| 2415

失败:0300 ||| 7612 ||| 2915