Click to See Complete Forum and Search --> : PHP Postcode Validation - output format
peteyb
03-14-2006, 08:08 AM
Hey all.
I am using the following script to allow UK postcodes that begin with PL, TR, TQ and EX to be allowed through except those on the banned list.
<?php
function checkPostcode (&$postcode, &$banned, &$errorp)
{
$banned = array('EX10 0AF', 'EX10 0JX', 'EX10 0LB', 'EX10 0LD', 'EX10 0LJ', 'EX10 0LW', 'EX10 0LD', 'EX10 0NG', 'EX10 0SF', 'EX10 9PN', 'EX10 0LD', 'EX11 1LU', 'EX11 1NF', 'EX12 4AF', 'EX13 5RS', 'EX13 7LF', 'EX13 7LN', 'EX13 7LW', 'EX13 7NN', 'EX13 7PE', 'EX13 7PG', 'EX13 7PJ', 'EX13 7PN', 'EX13 7PP', 'EX13 7PQ', 'EX13 7RG', 'EX14 3HE', 'EX14 3NZ', 'EX15 1BH', 'EX15 1BS', 'EX15 1BW', 'EX15 1NX', 'EX15 1PA', 'EX15 1QL', 'EX15 1XL', 'EX15 2LQ', 'EX15 2ND', 'EX15 2NW', 'EX15 2RB', 'EX15 3AR', 'EX15 3DB', 'EX15 3DR', 'EX15 3HG', 'EX15 3JJ', 'EX15 3JL', 'EX16 4NA', 'EX16 5AA', 'EX16 5AD', 'EX16 5AE', 'EX16 5HY', 'EX16 5JL', 'EX16 5JN', 'EX16 5JP', 'EX16 5JR', 'EX16 5JT', 'EX16 5JU', 'EX16 5JW', 'EX16 5LE', 'EX16 5LF', 'EX16 5LG', 'EX16 5LH', 'EX16 5LJ', 'EX16 5LQ', 'EX16 5LZ', 'EX16 5QG', 'EX16 6HA', 'EX16 6HX', 'EX16 6JQ', 'EX16 6RZ', 'EX16 6SB', 'EX16 6SW', 'EX16 6TG', 'EX16 6TR', 'EX16 7JH', 'EX16 7JQ', 'EX16 7RA', 'EX16 7RB', 'EX16 7RJ', 'EX16 8HD', 'EX16 8HJ', 'EX16 8LA', 'EX16 8PU', 'EX16 8RG', 'EX16 8RP', 'EX16 8RW', 'EX16 8SA', 'EX16 9AF', 'EX16 9AY', 'EX16 9DX', 'EX16 9JA', 'EX16 9PD', 'EX16 9PY', 'EX17 3DH', 'EX17 3PS', 'EX17 3QN', 'EX17 4SL', 'EX17 5AX', 'EX17 5HU', 'EX17 5JB', 'EX17 5LW', 'EX17 5PW', 'EX17 6HZ', 'EX18 7EA', 'EX18 7LF', 'EX18 7PL', 'EX18 7SL', 'EX19 8AZ', 'EX2 6LH', 'EX2 6LL', 'EX2 6LR', 'EX2 6LW', 'EX2 6LX', 'EX2 6LY', 'EX20 2AB', 'EX20 2AH', 'EX20 2AJ', 'EX20 2EE', 'EX20 2EF', 'EX20 2LZ', 'EX20 2NH', 'EX20 2NP', 'EX20 2NR', 'EX20 2SE', 'EX20 3EG', 'EX20 3NE', 'EX22 7UW', 'EX23 9BN', 'EX23 9BP', 'EX23 9BW', 'EX24 6QF', 'EX3 0PA', 'EX3 0PB', 'EX31 3JH', 'EX31 4AP', 'EX31 4AW', 'EX31 4HG', 'EX31 4LR', 'EX31 4QB', 'EX31 4RU', 'EX31 4ST', 'EX31 4TT', 'EX32 0LX', 'EX32 0LZ', 'EX32 0ND', 'EX32 0RJ', 'EX33 2NX', 'EX34 0AE', 'EX34 0AF', 'EX34 0AJ', 'EX34 0AN', 'EX34 0AQ', 'EX34 0NA', 'EX34 0PJ', 'EX35 6NX', 'EX36 3DT', 'EX36 3EP', 'EX36 3JH', 'EX36 3JJ', 'EX36 3JL', 'EX36 3LE', 'EX36 3LZ', 'EX36 3NW', 'EX36 3PS', 'EX36 4HX', 'EX36 4JJ', 'EX36 4JL', 'EX36 4LG', 'EX36 4LQ', 'EX36 4PN', 'EX36 4QD', 'EX36 4RT', 'EX37 9AB', 'EX37 9AG', 'EX37 9AR', 'EX37 9DA', 'EX37 9HR', 'EX37 9JS', 'EX37 9NB', 'EX37 9RE', 'EX38 7EJ', 'EX38 7HD', 'EX38 8AS', 'EX38 8AT', 'EX38 8AW', 'EX38 8JD', 'EX38 8JE', 'EX39 4QT', 'EX39 6DS', 'EX39 6DY', 'EX39 6EA', 'EX39 6HL', 'EX4 2HA', 'EX4 5AD', 'EX5 1BT', 'EX5 1BX', 'EX5 2NG', 'EX5 2NH', 'EX5 2NJ', 'EX5 4BR', 'EX5 4BS', 'EX5 4BT', 'EX5 4LD', 'EX5 5AB', 'EX5 5AE', 'EX5 5EQ', 'EX5 5LX', 'EX5 5LY', 'EX6 7HE', 'EX6 7PW', 'EX6 7QL', 'EX6 7QN', 'EX6 7TA', 'EX6 7TB', 'EX6 7TD', 'EX6 7TF', 'EX6 7TG', 'EX6 7TH', 'EX6 7TJ', 'EX6 7TL', 'EX6 7TN', 'EX6 7UT', 'EX6 8JS', 'EX7 9AE', 'EX7 9BJ', 'EX7 9PY', 'EX8 5ER', 'EX8 5EY', 'EX8 5EZ', 'EX8 5HH', 'EX8 5HQ', 'EX9 7AZ', 'PL10 1BY', 'PL12 5BG', 'PL13 2EP', 'PL13 2ER', 'PL13 2ES', 'PL13 2EX', 'PL14 3LJ', 'PL14 4QX', 'PL14 6NG', 'PL15 7NW', 'PL15 8DH', 'PL15 8EX', 'PL15 8UW', 'PL15 9QN', 'PL15 9QP', 'PL16 0AH', 'PL16 0AJ', 'PL16 0AL', 'PL16 0EL', 'PL17 8LQ', 'PL17 8NJ', 'PL17 8NL', 'PL19 9PR', 'PL20 6SG', 'PL20 7SL', 'PL20 7SP', 'PL20 7SS', 'PL20 7TG', 'PL20 7TJ', 'PL20 7TZ', 'PL21 0LL', 'PL21 9NT', 'PL24 2AD', 'PL24 2AE', 'PL24 2AF', 'PL24 2AG', 'PL24 2AH', 'PL24 2AJ', 'PL24 2AN', 'PL24 2AQ', 'PL24 2AR', 'PL24 2AT', 'PL24 2AW', 'PL24 2AX', 'PL24 2AY', 'PL24 2BB', 'PL24 2BD', 'PL24 2DH', 'PL24 2DN', 'PL24 2HY', 'PL24 2JA', 'PL24 2JB', 'PL24 2JD', 'PL24 2JF', 'PL24 2JG', 'PL24 2JH', 'PL24 2JQ', 'PL24 2LU', 'PL24 2LX', 'PL24 2LZ', 'PL24 2ND', 'PL24 2NF', 'PL24 2NJ', 'PL24 2NS', 'PL24 2NU', 'PL24 2NX', 'PL24 2NY', 'PL24 2PA', 'PL24 2PB', 'PL24 2PD', 'PL24 2PE', 'PL24 2RF', 'PL24 2RL', 'PL24 2RN', 'PL24 2TW', 'PL25 5BU', 'PL26 6BT', 'PL26 6BU', 'PL26 6BX', 'PL26 6BZ', 'PL26 6DA', 'PL26 6DB', 'PL26 6DD', 'PL26 6DG', 'PL26 6RZ', 'PL26 7AA', 'PL26 7AD', 'PL26 7AE', 'PL26 7AR', 'PL26 7AS', 'PL26 7AX', 'PL26 7AY', 'PL26 7LL', 'PL3 6EE', 'PL30 5LF', 'PL30 5LL', 'PL32 9PB', 'PL32 9PD', 'PL32 9PG', 'PL32 9TL', 'PL5 4AQ', 'PL5 4LD', 'PL5 4NB', 'PL5 4NG', 'PL5 4NH', 'PL5 4NZ', 'PL7 1YB', 'PL8 2DY', 'PL8 2DZ', 'PL8 2EY', 'PL8 2LS', 'PL8 2LX', 'PL8 2NA', 'TQ10 9EF', 'TQ10 9ET', 'TQ10 9NB', 'TQ11 0AH', 'TQ11 0BA', 'TQ11 0BS', 'TQ11 0BT', 'TQ11 0BU', 'TQ11 0BY', 'TQ11 0BZ', 'TQ11 0EA', 'TQ11 0HE', 'TQ11 0NN', 'TQ11 0PF', 'TQ11 0QA', 'TQ12 3PF', 'TQ12 5UP', 'TQ12 6NL', 'TQ13 0NJ', 'TQ13 7DY', 'TQ13 7EJ', 'TQ13 7JG', 'TQ13 7QH', 'TQ13 7QL', 'TQ13 7QP', 'TQ13 7QW', 'TQ13 7RF', 'TQ13 7RN', 'TQ13 7TF', 'TQ13 7TG', 'TQ13 8JZ', 'TQ13 8LA', 'TQ13 8QY', 'TQ13 8SD', 'TQ13 9SS', 'TQ13 9SW', 'TQ13 9TB', 'TQ13 9TS', 'TQ14 8AB', 'TQ14 8AD', 'TQ14 8AE', 'TQ14 8AF', 'TQ14 8AH', 'TQ14 8AJ', 'TQ14 8AL', 'TQ14 8AS', 'TQ14 8AT', 'TQ14 8AU', 'TQ14 8AW', 'TQ14 8AX', 'TQ14 8AY', 'TQ14 8BG', 'TQ14 8BJ', 'TQ14 8BQ', 'TQ14 8BR', 'TQ14 8BT', 'TQ14 8BU', 'TQ14 8BX', 'TQ14 8BZ', 'TQ14 8DA', 'TQ14 8DB', 'TQ14 8DD', 'TQ14 8DE', 'TQ14 8DJ', 'TQ14 8DN', 'TQ14 8DS', 'TQ14 8EA', 'TQ14 8EB', 'TQ14 8EE', 'TQ14 8EF', 'TQ14 8EG', 'TQ14 8EN', 'TQ14 8EP', 'TQ14 8ES', 'TQ14 8FG', 'TQ14 8HH', 'TQ14 8HR', 'TQ14 8HT', 'TQ14 8HW', 'TQ14 8PE', 'TQ14 8SJ', 'TQ14 8SN', 'TQ14 8ST', 'TQ14 8SU', 'TQ14 8SW', 'TQ14 8SX', 'TQ14 8SY', 'TQ14 8SZ', 'TQ14 8TB', 'TQ7 2DN', 'TQ7 2QD', 'TQ7 2RE', 'TQ7 4DS', 'TQ9 6AH', 'TQ9 6NE', 'TQ9 6PD', 'TQ9 6RH', 'TQ9 6RL', 'TQ9 7AE', 'TQ9 7JT', 'TQ9 7LN', 'TQ9 7SR', 'TQ9 7SS', 'TQ9 7SU', 'TQ9 7SX', 'TQ9 7SZ', 'TQ9 7TA', 'TQ9 7TB', 'TQ9 7TH', 'TQ9 7TJ', 'TQ9 7TL', 'TQ9 7TP', 'TQ9 7TQ', 'TQ9 7TR', 'TQ9 7TS', 'TQ9 7TT', 'TQ9 7TU', 'TQ9 7TX', 'TQ9 7TY', 'TQ9 7UH', 'TR13 0PF', 'TR13 0RA', 'TR13 8HG', 'TR13 8HP', 'TR13 8HR', 'TR13 8HW', 'TR13 8HZ', 'TR17 0HJ', 'TR17 0HN', 'TR17 0HQ', 'TR18 3LL', 'TR19 7PG', 'TR19 7PH', 'TR19 7PN', 'TR19 7PQ', 'TR19 7PX', 'TR19 7TW', 'TR2 4AU', 'TR2 4EX', 'TR2 4HX', 'TR2 4PG', 'TR2 4PH', 'TR2 4PP', 'TR2 4PQ', 'TR2 4QB', 'TR2 4RU', 'TR2 4RX', 'TR2 4SB', 'TR20 9BL', 'TR3 6AA', 'TR3 7BT', 'TR3 7BU', 'TR3 7BX', 'TR3 7BY', 'TR3 7ND', 'TR4 8QZ', 'TR4 8RA', 'TR4 8RE', 'TR4 8RL', 'TR4 8RN', 'TR4 8SU', 'TR4 9PE', 'TR4 9QT', 'TR7 2HX', 'TR7 2RW', 'TR7 2TG', 'TR7 3BS', 'TR7 3PE', 'TR8 4BJ', 'TR8 4EP', 'TR8 4JW', 'TR8 4PU', 'TR8 4QE', 'TR8 5PS', 'TR9 6BD', 'TR9 6BY');
$banned = '/^('.implode('|', $banned).')/i';
if(preg_match($banned, $postcode))
{
$errorp = 'Your property is in a high risk area and must be referred to Zurich. Please call us on 08450 264420 to see if we can quote';
return false;
}
$prefixes = '/^(ex|pl|tq|tr)/i';
if(!preg_match($prefixes, $postcode))
{
$errorp = 'We can only quote for EX, PL, TQ & TR postcodes';
return false;
}
$syntax = '/^([a-z]{1,2}[0-9]{1,2})\s?([0-9]{1}[a-z]{2})$/i';
if(!preg_match($syntax, $postcode, $matches))
{
$errorp = 'Invalid entry';
return false;
}
$postcode = strtoupper ($matches[1] . ' ' . $matches [2]);
$errorp = '';
return true;
}
?>
How can i make this so that the output of the text is always in capitals and with a space between AANN and NAA.
i.e. if the user enters pl202ze the output will be PL20 2ZE
Brooksie155
03-14-2006, 08:57 AM
The reason your postcode is not being returned formatted is because the code:
$postcode = strtoupper ($matches[1] . ' ' . $matches [2]);
is not being reached, this is because when you hit a 'return false;' statement execution stops.
In this case only if all the checks passed and the function returned true would you get the formatted version of the postcode.
function checkPostcode (&$postcode, &$banned, &$errorp)
{
$syntax = '/^([a-z]{1,2}[0-9]{1,2})\s?([0-9]{1}[a-z]{2})$/i';
if(!preg_match($syntax, $postcode, $matches))
{
$postcode = strtoupper ($matches[1] . ' ' . $matches [2]); // In case it fails.
$errorp = 'Invalid entry';
return false;
}
// format the postcode before we continue.
$postcode = strtoupper ($matches[1] . ' ' . $matches [2]);
$banned = array('EX10 0AF', 'EX10 0JX', 'EX10 0LB', 'EX10 0LD', 'EX10 0LJ', 'EX10 0LW', 'EX10 0LD', 'EX10 0NG', 'EX10 0SF', 'EX10 9PN', 'EX10 0LD', 'EX11 1LU', 'EX11 1NF', 'EX12 4AF', 'EX13 5RS', 'EX13 7LF', 'EX13 7LN', 'EX13 7LW', 'EX13 7NN', 'EX13 7PE', 'EX13 7PG', 'EX13 7PJ', 'EX13 7PN', 'EX13 7PP', 'EX13 7PQ', 'EX13 7RG', 'EX14 3HE', 'EX14 3NZ', 'EX15 1BH', 'EX15 1BS', 'EX15 1BW', 'EX15 1NX', 'EX15 1PA', 'EX15 1QL', 'EX15 1XL', 'EX15 2LQ', 'EX15 2ND', 'EX15 2NW', 'EX15 2RB', 'EX15 3AR', 'EX15 3DB', 'EX15 3DR', 'EX15 3HG', 'EX15 3JJ', 'EX15 3JL', 'EX16 4NA', 'EX16 5AA', 'EX16 5AD', 'EX16 5AE', 'EX16 5HY', 'EX16 5JL', 'EX16 5JN', 'EX16 5JP', 'EX16 5JR', 'EX16 5JT', 'EX16 5JU', 'EX16 5JW', 'EX16 5LE', 'EX16 5LF', 'EX16 5LG', 'EX16 5LH', 'EX16 5LJ', 'EX16 5LQ', 'EX16 5LZ', 'EX16 5QG', 'EX16 6HA', 'EX16 6HX', 'EX16 6JQ', 'EX16 6RZ', 'EX16 6SB', 'EX16 6SW', 'EX16 6TG', 'EX16 6TR', 'EX16 7JH', 'EX16 7JQ', 'EX16 7RA', 'EX16 7RB', 'EX16 7RJ', 'EX16 8HD', 'EX16 8HJ', 'EX16 8LA', 'EX16 8PU', 'EX16 8RG', 'EX16 8RP', 'EX16 8RW', 'EX16 8SA', 'EX16 9AF', 'EX16 9AY', 'EX16 9DX', 'EX16 9JA', 'EX16 9PD', 'EX16 9PY', 'EX17 3DH', 'EX17 3PS', 'EX17 3QN', 'EX17 4SL', 'EX17 5AX', 'EX17 5HU', 'EX17 5JB', 'EX17 5LW', 'EX17 5PW', 'EX17 6HZ', 'EX18 7EA', 'EX18 7LF', 'EX18 7PL', 'EX18 7SL', 'EX19 8AZ', 'EX2 6LH', 'EX2 6LL', 'EX2 6LR', 'EX2 6LW', 'EX2 6LX', 'EX2 6LY', 'EX20 2AB', 'EX20 2AH', 'EX20 2AJ', 'EX20 2EE', 'EX20 2EF', 'EX20 2LZ', 'EX20 2NH', 'EX20 2NP', 'EX20 2NR', 'EX20 2SE', 'EX20 3EG', 'EX20 3NE', 'EX22 7UW', 'EX23 9BN', 'EX23 9BP', 'EX23 9BW', 'EX24 6QF', 'EX3 0PA', 'EX3 0PB', 'EX31 3JH', 'EX31 4AP', 'EX31 4AW', 'EX31 4HG', 'EX31 4LR', 'EX31 4QB', 'EX31 4RU', 'EX31 4ST', 'EX31 4TT', 'EX32 0LX', 'EX32 0LZ', 'EX32 0ND', 'EX32 0RJ', 'EX33 2NX', 'EX34 0AE', 'EX34 0AF', 'EX34 0AJ', 'EX34 0AN', 'EX34 0AQ', 'EX34 0NA', 'EX34 0PJ', 'EX35 6NX', 'EX36 3DT', 'EX36 3EP', 'EX36 3JH', 'EX36 3JJ', 'EX36 3JL', 'EX36 3LE', 'EX36 3LZ', 'EX36 3NW', 'EX36 3PS', 'EX36 4HX', 'EX36 4JJ', 'EX36 4JL', 'EX36 4LG', 'EX36 4LQ', 'EX36 4PN', 'EX36 4QD', 'EX36 4RT', 'EX37 9AB', 'EX37 9AG', 'EX37 9AR', 'EX37 9DA', 'EX37 9HR', 'EX37 9JS', 'EX37 9NB', 'EX37 9RE', 'EX38 7EJ', 'EX38 7HD', 'EX38 8AS', 'EX38 8AT', 'EX38 8AW', 'EX38 8JD', 'EX38 8JE', 'EX39 4QT', 'EX39 6DS', 'EX39 6DY', 'EX39 6EA', 'EX39 6HL', 'EX4 2HA', 'EX4 5AD', 'EX5 1BT', 'EX5 1BX', 'EX5 2NG', 'EX5 2NH', 'EX5 2NJ', 'EX5 4BR', 'EX5 4BS', 'EX5 4BT', 'EX5 4LD', 'EX5 5AB', 'EX5 5AE', 'EX5 5EQ', 'EX5 5LX', 'EX5 5LY', 'EX6 7HE', 'EX6 7PW', 'EX6 7QL', 'EX6 7QN', 'EX6 7TA', 'EX6 7TB', 'EX6 7TD', 'EX6 7TF', 'EX6 7TG', 'EX6 7TH', 'EX6 7TJ', 'EX6 7TL', 'EX6 7TN', 'EX6 7UT', 'EX6 8JS', 'EX7 9AE', 'EX7 9BJ', 'EX7 9PY', 'EX8 5ER', 'EX8 5EY', 'EX8 5EZ', 'EX8 5HH', 'EX8 5HQ', 'EX9 7AZ', 'PL10 1BY', 'PL12 5BG', 'PL13 2EP', 'PL13 2ER', 'PL13 2ES', 'PL13 2EX', 'PL14 3LJ', 'PL14 4QX', 'PL14 6NG', 'PL15 7NW', 'PL15 8DH', 'PL15 8EX', 'PL15 8UW', 'PL15 9QN', 'PL15 9QP', 'PL16 0AH', 'PL16 0AJ', 'PL16 0AL', 'PL16 0EL', 'PL17 8LQ', 'PL17 8NJ', 'PL17 8NL', 'PL19 9PR', 'PL20 6SG', 'PL20 7SL', 'PL20 7SP', 'PL20 7SS', 'PL20 7TG', 'PL20 7TJ', 'PL20 7TZ', 'PL21 0LL', 'PL21 9NT', 'PL24 2AD', 'PL24 2AE', 'PL24 2AF', 'PL24 2AG', 'PL24 2AH', 'PL24 2AJ', 'PL24 2AN', 'PL24 2AQ', 'PL24 2AR', 'PL24 2AT', 'PL24 2AW', 'PL24 2AX', 'PL24 2AY', 'PL24 2BB', 'PL24 2BD', 'PL24 2DH', 'PL24 2DN', 'PL24 2HY', 'PL24 2JA', 'PL24 2JB', 'PL24 2JD', 'PL24 2JF', 'PL24 2JG', 'PL24 2JH', 'PL24 2JQ', 'PL24 2LU', 'PL24 2LX', 'PL24 2LZ', 'PL24 2ND', 'PL24 2NF', 'PL24 2NJ', 'PL24 2NS', 'PL24 2NU', 'PL24 2NX', 'PL24 2NY', 'PL24 2PA', 'PL24 2PB', 'PL24 2PD', 'PL24 2PE', 'PL24 2RF', 'PL24 2RL', 'PL24 2RN', 'PL24 2TW', 'PL25 5BU', 'PL26 6BT', 'PL26 6BU', 'PL26 6BX', 'PL26 6BZ', 'PL26 6DA', 'PL26 6DB', 'PL26 6DD', 'PL26 6DG', 'PL26 6RZ', 'PL26 7AA', 'PL26 7AD', 'PL26 7AE', 'PL26 7AR', 'PL26 7AS', 'PL26 7AX', 'PL26 7AY', 'PL26 7LL', 'PL3 6EE', 'PL30 5LF', 'PL30 5LL', 'PL32 9PB', 'PL32 9PD', 'PL32 9PG', 'PL32 9TL', 'PL5 4AQ', 'PL5 4LD', 'PL5 4NB', 'PL5 4NG', 'PL5 4NH', 'PL5 4NZ', 'PL7 1YB', 'PL8 2DY', 'PL8 2DZ', 'PL8 2EY', 'PL8 2LS', 'PL8 2LX', 'PL8 2NA', 'TQ10 9EF', 'TQ10 9ET', 'TQ10 9NB', 'TQ11 0AH', 'TQ11 0BA', 'TQ11 0BS', 'TQ11 0BT', 'TQ11 0BU', 'TQ11 0BY', 'TQ11 0BZ', 'TQ11 0EA', 'TQ11 0HE', 'TQ11 0NN', 'TQ11 0PF', 'TQ11 0QA', 'TQ12 3PF', 'TQ12 5UP', 'TQ12 6NL', 'TQ13 0NJ', 'TQ13 7DY', 'TQ13 7EJ', 'TQ13 7JG', 'TQ13 7QH', 'TQ13 7QL', 'TQ13 7QP', 'TQ13 7QW', 'TQ13 7RF', 'TQ13 7RN', 'TQ13 7TF', 'TQ13 7TG', 'TQ13 8JZ', 'TQ13 8LA', 'TQ13 8QY', 'TQ13 8SD', 'TQ13 9SS', 'TQ13 9SW', 'TQ13 9TB', 'TQ13 9TS', 'TQ14 8AB', 'TQ14 8AD', 'TQ14 8AE', 'TQ14 8AF', 'TQ14 8AH', 'TQ14 8AJ', 'TQ14 8AL', 'TQ14 8AS', 'TQ14 8AT', 'TQ14 8AU', 'TQ14 8AW', 'TQ14 8AX', 'TQ14 8AY', 'TQ14 8BG', 'TQ14 8BJ', 'TQ14 8BQ', 'TQ14 8BR', 'TQ14 8BT', 'TQ14 8BU', 'TQ14 8BX', 'TQ14 8BZ', 'TQ14 8DA', 'TQ14 8DB', 'TQ14 8DD', 'TQ14 8DE', 'TQ14 8DJ', 'TQ14 8DN', 'TQ14 8DS', 'TQ14 8EA', 'TQ14 8EB', 'TQ14 8EE', 'TQ14 8EF', 'TQ14 8EG', 'TQ14 8EN', 'TQ14 8EP', 'TQ14 8ES', 'TQ14 8FG', 'TQ14 8HH', 'TQ14 8HR', 'TQ14 8HT', 'TQ14 8HW', 'TQ14 8PE', 'TQ14 8SJ', 'TQ14 8SN', 'TQ14 8ST', 'TQ14 8SU', 'TQ14 8SW', 'TQ14 8SX', 'TQ14 8SY', 'TQ14 8SZ', 'TQ14 8TB', 'TQ7 2DN', 'TQ7 2QD', 'TQ7 2RE', 'TQ7 4DS', 'TQ9 6AH', 'TQ9 6NE', 'TQ9 6PD', 'TQ9 6RH', 'TQ9 6RL', 'TQ9 7AE', 'TQ9 7JT', 'TQ9 7LN', 'TQ9 7SR', 'TQ9 7SS', 'TQ9 7SU', 'TQ9 7SX', 'TQ9 7SZ', 'TQ9 7TA', 'TQ9 7TB', 'TQ9 7TH', 'TQ9 7TJ', 'TQ9 7TL', 'TQ9 7TP', 'TQ9 7TQ', 'TQ9 7TR', 'TQ9 7TS', 'TQ9 7TT', 'TQ9 7TU', 'TQ9 7TX', 'TQ9 7TY', 'TQ9 7UH', 'TR13 0PF', 'TR13 0RA', 'TR13 8HG', 'TR13 8HP', 'TR13 8HR', 'TR13 8HW', 'TR13 8HZ', 'TR17 0HJ', 'TR17 0HN', 'TR17 0HQ', 'TR18 3LL', 'TR19 7PG', 'TR19 7PH', 'TR19 7PN', 'TR19 7PQ', 'TR19 7PX', 'TR19 7TW', 'TR2 4AU', 'TR2 4EX', 'TR2 4HX', 'TR2 4PG', 'TR2 4PH', 'TR2 4PP', 'TR2 4PQ', 'TR2 4QB', 'TR2 4RU', 'TR2 4RX', 'TR2 4SB', 'TR20 9BL', 'TR3 6AA', 'TR3 7BT', 'TR3 7BU', 'TR3 7BX', 'TR3 7BY', 'TR3 7ND', 'TR4 8QZ', 'TR4 8RA', 'TR4 8RE', 'TR4 8RL', 'TR4 8RN', 'TR4 8SU', 'TR4 9PE', 'TR4 9QT', 'TR7 2HX', 'TR7 2RW', 'TR7 2TG', 'TR7 3BS', 'TR7 3PE', 'TR8 4BJ', 'TR8 4EP', 'TR8 4JW', 'TR8 4PU', 'TR8 4QE', 'TR8 5PS', 'TR9 6BD', 'TR9 6BY');
$banned = '/^('.implode('|', $banned).')/i';
if(preg_match($banned, $postcode))
{
$errorp = 'Your property is in a high risk area and must be referred to Zurich. Please call us on 08450 264420 to see if we can quote';
return false;
}
$prefixes = '/^(ex|pl|tq|tr)/i';
if(!preg_match($prefixes, $postcode))
{
$errorp = 'We can only quote for EX, PL, TQ & TR postcodes';
return false;
}
$errorp = '';
return true;
}
peteyb
03-14-2006, 09:53 AM
not working?
Brooksie155
03-14-2006, 10:52 AM
Hmm, works for me, What are your inputs?
I am inputting:
$postcode = "ex100af";
$errorp = '';
$banned = '';
and I get:
Postcode: EX10 0AF
Error: Your property is in a high risk area and must be referred to Zurich. Please call us on 08450 264420 to see if we can quote
Alternativly if I use a random post code not listed in your array, I only get the formatted post code back.
My test script is below, cut and paste it into a new file and see what you get.
<?
function checkPostcode (&$postcode, &$banned, &$errorp)
{
$syntax = '/^([a-z]{1,2}[0-9]{1,2})\s?([0-9]{1}[a-z]{2})$/i';
if(!preg_match($syntax, $postcode, $matches))
{
$postcode = strtoupper ($matches[1] . ' ' . $matches [2]); // In case it fails.
$errorp = 'Invalid entry';
return false;
}
// format the postcode before we continue.
$postcode = strtoupper ($matches[1] . ' ' . $matches [2]);
$banned = array('EX10 0AF', 'EX10 0JX', 'EX10 0LB', 'EX10 0LD', 'EX10 0LJ', 'EX10 0LW', 'EX10 0LD', 'EX10 0NG', 'EX10 0SF', 'EX10 9PN', 'EX10 0LD', 'EX11 1LU', 'EX11 1NF', 'EX12 4AF', 'EX13 5RS', 'EX13 7LF', 'EX13 7LN', 'EX13 7LW', 'EX13 7NN', 'EX13 7PE', 'EX13 7PG', 'EX13 7PJ', 'EX13 7PN', 'EX13 7PP', 'EX13 7PQ', 'EX13 7RG', 'EX14 3HE', 'EX14 3NZ', 'EX15 1BH', 'EX15 1BS', 'EX15 1BW', 'EX15 1NX', 'EX15 1PA', 'EX15 1QL', 'EX15 1XL', 'EX15 2LQ', 'EX15 2ND', 'EX15 2NW', 'EX15 2RB', 'EX15 3AR', 'EX15 3DB', 'EX15 3DR', 'EX15 3HG', 'EX15 3JJ', 'EX15 3JL', 'EX16 4NA', 'EX16 5AA', 'EX16 5AD', 'EX16 5AE', 'EX16 5HY', 'EX16 5JL', 'EX16 5JN', 'EX16 5JP', 'EX16 5JR', 'EX16 5JT', 'EX16 5JU', 'EX16 5JW', 'EX16 5LE', 'EX16 5LF', 'EX16 5LG', 'EX16 5LH', 'EX16 5LJ', 'EX16 5LQ', 'EX16 5LZ', 'EX16 5QG', 'EX16 6HA', 'EX16 6HX', 'EX16 6JQ', 'EX16 6RZ', 'EX16 6SB', 'EX16 6SW', 'EX16 6TG', 'EX16 6TR', 'EX16 7JH', 'EX16 7JQ', 'EX16 7RA', 'EX16 7RB', 'EX16 7RJ', 'EX16 8HD', 'EX16 8HJ', 'EX16 8LA', 'EX16 8PU', 'EX16 8RG', 'EX16 8RP', 'EX16 8RW', 'EX16 8SA', 'EX16 9AF', 'EX16 9AY', 'EX16 9DX', 'EX16 9JA', 'EX16 9PD', 'EX16 9PY', 'EX17 3DH', 'EX17 3PS', 'EX17 3QN', 'EX17 4SL', 'EX17 5AX', 'EX17 5HU', 'EX17 5JB', 'EX17 5LW', 'EX17 5PW', 'EX17 6HZ', 'EX18 7EA', 'EX18 7LF', 'EX18 7PL', 'EX18 7SL', 'EX19 8AZ', 'EX2 6LH', 'EX2 6LL', 'EX2 6LR', 'EX2 6LW', 'EX2 6LX', 'EX2 6LY', 'EX20 2AB', 'EX20 2AH', 'EX20 2AJ', 'EX20 2EE', 'EX20 2EF', 'EX20 2LZ', 'EX20 2NH', 'EX20 2NP', 'EX20 2NR', 'EX20 2SE', 'EX20 3EG', 'EX20 3NE', 'EX22 7UW', 'EX23 9BN', 'EX23 9BP', 'EX23 9BW', 'EX24 6QF', 'EX3 0PA', 'EX3 0PB', 'EX31 3JH', 'EX31 4AP', 'EX31 4AW', 'EX31 4HG', 'EX31 4LR', 'EX31 4QB', 'EX31 4RU', 'EX31 4ST', 'EX31 4TT', 'EX32 0LX', 'EX32 0LZ', 'EX32 0ND', 'EX32 0RJ', 'EX33 2NX', 'EX34 0AE', 'EX34 0AF', 'EX34 0AJ', 'EX34 0AN', 'EX34 0AQ', 'EX34 0NA', 'EX34 0PJ', 'EX35 6NX', 'EX36 3DT', 'EX36 3EP', 'EX36 3JH', 'EX36 3JJ', 'EX36 3JL', 'EX36 3LE', 'EX36 3LZ', 'EX36 3NW', 'EX36 3PS', 'EX36 4HX', 'EX36 4JJ', 'EX36 4JL', 'EX36 4LG', 'EX36 4LQ', 'EX36 4PN', 'EX36 4QD', 'EX36 4RT', 'EX37 9AB', 'EX37 9AG', 'EX37 9AR', 'EX37 9DA', 'EX37 9HR', 'EX37 9JS', 'EX37 9NB', 'EX37 9RE', 'EX38 7EJ', 'EX38 7HD', 'EX38 8AS', 'EX38 8AT', 'EX38 8AW', 'EX38 8JD', 'EX38 8JE', 'EX39 4QT', 'EX39 6DS', 'EX39 6DY', 'EX39 6EA', 'EX39 6HL', 'EX4 2HA', 'EX4 5AD', 'EX5 1BT', 'EX5 1BX', 'EX5 2NG', 'EX5 2NH', 'EX5 2NJ', 'EX5 4BR', 'EX5 4BS', 'EX5 4BT', 'EX5 4LD', 'EX5 5AB', 'EX5 5AE', 'EX5 5EQ', 'EX5 5LX', 'EX5 5LY', 'EX6 7HE', 'EX6 7PW', 'EX6 7QL', 'EX6 7QN', 'EX6 7TA', 'EX6 7TB', 'EX6 7TD', 'EX6 7TF', 'EX6 7TG', 'EX6 7TH', 'EX6 7TJ', 'EX6 7TL', 'EX6 7TN', 'EX6 7UT', 'EX6 8JS', 'EX7 9AE', 'EX7 9BJ', 'EX7 9PY', 'EX8 5ER', 'EX8 5EY', 'EX8 5EZ', 'EX8 5HH', 'EX8 5HQ', 'EX9 7AZ', 'PL10 1BY', 'PL12 5BG', 'PL13 2EP', 'PL13 2ER', 'PL13 2ES', 'PL13 2EX', 'PL14 3LJ', 'PL14 4QX', 'PL14 6NG', 'PL15 7NW', 'PL15 8DH', 'PL15 8EX', 'PL15 8UW', 'PL15 9QN', 'PL15 9QP', 'PL16 0AH', 'PL16 0AJ', 'PL16 0AL', 'PL16 0EL', 'PL17 8LQ', 'PL17 8NJ', 'PL17 8NL', 'PL19 9PR', 'PL20 6SG', 'PL20 7SL', 'PL20 7SP', 'PL20 7SS', 'PL20 7TG', 'PL20 7TJ', 'PL20 7TZ', 'PL21 0LL', 'PL21 9NT', 'PL24 2AD', 'PL24 2AE', 'PL24 2AF', 'PL24 2AG', 'PL24 2AH', 'PL24 2AJ', 'PL24 2AN', 'PL24 2AQ', 'PL24 2AR', 'PL24 2AT', 'PL24 2AW', 'PL24 2AX', 'PL24 2AY', 'PL24 2BB', 'PL24 2BD', 'PL24 2DH', 'PL24 2DN', 'PL24 2HY', 'PL24 2JA', 'PL24 2JB', 'PL24 2JD', 'PL24 2JF', 'PL24 2JG', 'PL24 2JH', 'PL24 2JQ', 'PL24 2LU', 'PL24 2LX', 'PL24 2LZ', 'PL24 2ND', 'PL24 2NF', 'PL24 2NJ', 'PL24 2NS', 'PL24 2NU', 'PL24 2NX', 'PL24 2NY', 'PL24 2PA', 'PL24 2PB', 'PL24 2PD', 'PL24 2PE', 'PL24 2RF', 'PL24 2RL', 'PL24 2RN', 'PL24 2TW', 'PL25 5BU', 'PL26 6BT', 'PL26 6BU', 'PL26 6BX', 'PL26 6BZ', 'PL26 6DA', 'PL26 6DB', 'PL26 6DD', 'PL26 6DG', 'PL26 6RZ', 'PL26 7AA', 'PL26 7AD', 'PL26 7AE', 'PL26 7AR', 'PL26 7AS', 'PL26 7AX', 'PL26 7AY', 'PL26 7LL', 'PL3 6EE', 'PL30 5LF', 'PL30 5LL', 'PL32 9PB', 'PL32 9PD', 'PL32 9PG', 'PL32 9TL', 'PL5 4AQ', 'PL5 4LD', 'PL5 4NB', 'PL5 4NG', 'PL5 4NH', 'PL5 4NZ', 'PL7 1YB', 'PL8 2DY', 'PL8 2DZ', 'PL8 2EY', 'PL8 2LS', 'PL8 2LX', 'PL8 2NA', 'TQ10 9EF', 'TQ10 9ET', 'TQ10 9NB', 'TQ11 0AH', 'TQ11 0BA', 'TQ11 0BS', 'TQ11 0BT', 'TQ11 0BU', 'TQ11 0BY', 'TQ11 0BZ', 'TQ11 0EA', 'TQ11 0HE', 'TQ11 0NN', 'TQ11 0PF', 'TQ11 0QA', 'TQ12 3PF', 'TQ12 5UP', 'TQ12 6NL', 'TQ13 0NJ', 'TQ13 7DY', 'TQ13 7EJ', 'TQ13 7JG', 'TQ13 7QH', 'TQ13 7QL', 'TQ13 7QP', 'TQ13 7QW', 'TQ13 7RF', 'TQ13 7RN', 'TQ13 7TF', 'TQ13 7TG', 'TQ13 8JZ', 'TQ13 8LA', 'TQ13 8QY', 'TQ13 8SD', 'TQ13 9SS', 'TQ13 9SW', 'TQ13 9TB', 'TQ13 9TS', 'TQ14 8AB', 'TQ14 8AD', 'TQ14 8AE', 'TQ14 8AF', 'TQ14 8AH', 'TQ14 8AJ', 'TQ14 8AL', 'TQ14 8AS', 'TQ14 8AT', 'TQ14 8AU', 'TQ14 8AW', 'TQ14 8AX', 'TQ14 8AY', 'TQ14 8BG', 'TQ14 8BJ', 'TQ14 8BQ', 'TQ14 8BR', 'TQ14 8BT', 'TQ14 8BU', 'TQ14 8BX', 'TQ14 8BZ', 'TQ14 8DA', 'TQ14 8DB', 'TQ14 8DD', 'TQ14 8DE', 'TQ14 8DJ', 'TQ14 8DN', 'TQ14 8DS', 'TQ14 8EA', 'TQ14 8EB', 'TQ14 8EE', 'TQ14 8EF', 'TQ14 8EG', 'TQ14 8EN', 'TQ14 8EP', 'TQ14 8ES', 'TQ14 8FG', 'TQ14 8HH', 'TQ14 8HR', 'TQ14 8HT', 'TQ14 8HW', 'TQ14 8PE', 'TQ14 8SJ', 'TQ14 8SN', 'TQ14 8ST', 'TQ14 8SU', 'TQ14 8SW', 'TQ14 8SX', 'TQ14 8SY', 'TQ14 8SZ', 'TQ14 8TB', 'TQ7 2DN', 'TQ7 2QD', 'TQ7 2RE', 'TQ7 4DS', 'TQ9 6AH', 'TQ9 6NE', 'TQ9 6PD', 'TQ9 6RH', 'TQ9 6RL', 'TQ9 7AE', 'TQ9 7JT', 'TQ9 7LN', 'TQ9 7SR', 'TQ9 7SS', 'TQ9 7SU', 'TQ9 7SX', 'TQ9 7SZ', 'TQ9 7TA', 'TQ9 7TB', 'TQ9 7TH', 'TQ9 7TJ', 'TQ9 7TL', 'TQ9 7TP', 'TQ9 7TQ', 'TQ9 7TR', 'TQ9 7TS', 'TQ9 7TT', 'TQ9 7TU', 'TQ9 7TX', 'TQ9 7TY', 'TQ9 7UH', 'TR13 0PF', 'TR13 0RA', 'TR13 8HG', 'TR13 8HP', 'TR13 8HR', 'TR13 8HW', 'TR13 8HZ', 'TR17 0HJ', 'TR17 0HN', 'TR17 0HQ', 'TR18 3LL', 'TR19 7PG', 'TR19 7PH', 'TR19 7PN', 'TR19 7PQ', 'TR19 7PX', 'TR19 7TW', 'TR2 4AU', 'TR2 4EX', 'TR2 4HX', 'TR2 4PG', 'TR2 4PH', 'TR2 4PP', 'TR2 4PQ', 'TR2 4QB', 'TR2 4RU', 'TR2 4RX', 'TR2 4SB', 'TR20 9BL', 'TR3 6AA', 'TR3 7BT', 'TR3 7BU', 'TR3 7BX', 'TR3 7BY', 'TR3 7ND', 'TR4 8QZ', 'TR4 8RA', 'TR4 8RE', 'TR4 8RL', 'TR4 8RN', 'TR4 8SU', 'TR4 9PE', 'TR4 9QT', 'TR7 2HX', 'TR7 2RW', 'TR7 2TG', 'TR7 3BS', 'TR7 3PE', 'TR8 4BJ', 'TR8 4EP', 'TR8 4JW', 'TR8 4PU', 'TR8 4QE', 'TR8 5PS', 'TR9 6BD', 'TR9 6BY');
$banned = '/^('.implode('|', $banned).')/i';
if(preg_match($banned, $postcode))
{
$errorp = 'Your property is in a high risk area and must be referred to Zurich. Please call us on 08450 264420 to see if we can quote';
return false;
}
$prefixes = '/^(ex|pl|tq|tr)/i';
if(!preg_match($prefixes, $postcode))
{
$errorp = 'We can only quote for EX, PL, TQ & TR postcodes';
return false;
}
$errorp = '';
return true;
}
$postcode = "ex100af";
$errorp = '';
$banned = '';
checkPostcode ($postcode, $banned, $errorp);
echo "Postcode: " . $postcode . "<br>";
echo "Error: " . $errorp . "<br>";
?>
peteyb
03-15-2006, 06:17 AM
further testing has indicated that it works for banned postcodes but not for allowed postcodes?
peteyb
03-15-2006, 11:00 AM
am i being stupid??
chazzy
03-15-2006, 11:08 AM
post the code you currently have then.
peteyb
03-16-2006, 03:34 AM
<?php
function checkPostcode (&$postcode, &$banned, &$errorp)
{
$syntax = '/^([a-z]{1,2}[0-9]{1,2})\s?([0-9]{1}[a-z]{2})$/i';
if(!preg_match($syntax, $postcode, $matches))
{
$postcode = strtoupper ($matches[1] . ' ' . $matches [2]); // In case it fails.
$errorp = 'Invalid entry';
return false;
}
// format the postcode before we continue.
$postcode = strtoupper ($matches[1] . ' ' . $matches [2]);
$banned = array('EX10 0AF', 'EX10 0JX', 'EX10 0LB', 'EX10 0LD', 'EX10 0LJ', 'EX10 0LW', 'EX10 0LD', 'EX10 0NG', 'EX10 0SF', 'EX10 9PN', 'EX10 0LD', 'EX11 1LU', 'EX11 1NF', 'EX12 4AF', 'EX13 5RS', 'EX13 7LF', 'EX13 7LN', 'EX13 7LW', 'EX13 7NN', 'EX13 7PE', 'EX13 7PG', 'EX13 7PJ', 'EX13 7PN', 'EX13 7PP', 'EX13 7PQ', 'EX13 7RG', 'EX14 3HE', 'EX14 3NZ', 'EX15 1BH', 'EX15 1BS', 'EX15 1BW', 'EX15 1NX', 'EX15 1PA', 'EX15 1QL', 'EX15 1XL', 'EX15 2LQ', 'EX15 2ND', 'EX15 2NW', 'EX15 2RB', 'EX15 3AR', 'EX15 3DB', 'EX15 3DR', 'EX15 3HG', 'EX15 3JJ', 'EX15 3JL', 'EX16 4NA', 'EX16 5AA', 'EX16 5AD', 'EX16 5AE', 'EX16 5HY', 'EX16 5JL', 'EX16 5JN', 'EX16 5JP', 'EX16 5JR', 'EX16 5JT', 'EX16 5JU', 'EX16 5JW', 'EX16 5LE', 'EX16 5LF', 'EX16 5LG', 'EX16 5LH', 'EX16 5LJ', 'EX16 5LQ', 'EX16 5LZ', 'EX16 5QG', 'EX16 6HA', 'EX16 6HX', 'EX16 6JQ', 'EX16 6RZ', 'EX16 6SB', 'EX16 6SW', 'EX16 6TG', 'EX16 6TR', 'EX16 7JH', 'EX16 7JQ', 'EX16 7RA', 'EX16 7RB', 'EX16 7RJ', 'EX16 8HD', 'EX16 8HJ', 'EX16 8LA', 'EX16 8PU', 'EX16 8RG', 'EX16 8RP', 'EX16 8RW', 'EX16 8SA', 'EX16 9AF', 'EX16 9AY', 'EX16 9DX', 'EX16 9JA', 'EX16 9PD', 'EX16 9PY', 'EX17 3DH', 'EX17 3PS', 'EX17 3QN', 'EX17 4SL', 'EX17 5AX', 'EX17 5HU', 'EX17 5JB', 'EX17 5LW', 'EX17 5PW', 'EX17 6HZ', 'EX18 7EA', 'EX18 7LF', 'EX18 7PL', 'EX18 7SL', 'EX19 8AZ', 'EX2 6LH', 'EX2 6LL', 'EX2 6LR', 'EX2 6LW', 'EX2 6LX', 'EX2 6LY', 'EX20 2AB', 'EX20 2AH', 'EX20 2AJ', 'EX20 2EE', 'EX20 2EF', 'EX20 2LZ', 'EX20 2NH', 'EX20 2NP', 'EX20 2NR', 'EX20 2SE', 'EX20 3EG', 'EX20 3NE', 'EX22 7UW', 'EX23 9BN', 'EX23 9BP', 'EX23 9BW', 'EX24 6QF', 'EX3 0PA', 'EX3 0PB', 'EX31 3JH', 'EX31 4AP', 'EX31 4AW', 'EX31 4HG', 'EX31 4LR', 'EX31 4QB', 'EX31 4RU', 'EX31 4ST', 'EX31 4TT', 'EX32 0LX', 'EX32 0LZ', 'EX32 0ND', 'EX32 0RJ', 'EX33 2NX', 'EX34 0AE', 'EX34 0AF', 'EX34 0AJ', 'EX34 0AN', 'EX34 0AQ', 'EX34 0NA', 'EX34 0PJ', 'EX35 6NX', 'EX36 3DT', 'EX36 3EP', 'EX36 3JH', 'EX36 3JJ', 'EX36 3JL', 'EX36 3LE', 'EX36 3LZ', 'EX36 3NW', 'EX36 3PS', 'EX36 4HX', 'EX36 4JJ', 'EX36 4JL', 'EX36 4LG', 'EX36 4LQ', 'EX36 4PN', 'EX36 4QD', 'EX36 4RT', 'EX37 9AB', 'EX37 9AG', 'EX37 9AR', 'EX37 9DA', 'EX37 9HR', 'EX37 9JS', 'EX37 9NB', 'EX37 9RE', 'EX38 7EJ', 'EX38 7HD', 'EX38 8AS', 'EX38 8AT', 'EX38 8AW', 'EX38 8JD', 'EX38 8JE', 'EX39 4QT', 'EX39 6DS', 'EX39 6DY', 'EX39 6EA', 'EX39 6HL', 'EX4 2HA', 'EX4 5AD', 'EX5 1BT', 'EX5 1BX', 'EX5 2NG', 'EX5 2NH', 'EX5 2NJ', 'EX5 4BR', 'EX5 4BS', 'EX5 4BT', 'EX5 4LD', 'EX5 5AB', 'EX5 5AE', 'EX5 5EQ', 'EX5 5LX', 'EX5 5LY', 'EX6 7HE', 'EX6 7PW', 'EX6 7QL', 'EX6 7QN', 'EX6 7TA', 'EX6 7TB', 'EX6 7TD', 'EX6 7TF', 'EX6 7TG', 'EX6 7TH', 'EX6 7TJ', 'EX6 7TL', 'EX6 7TN', 'EX6 7UT', 'EX6 8JS', 'EX7 9AE', 'EX7 9BJ', 'EX7 9PY', 'EX8 5ER', 'EX8 5EY', 'EX8 5EZ', 'EX8 5HH', 'EX8 5HQ', 'EX9 7AZ', 'PL10 1BY', 'PL12 5BG', 'PL13 2EP', 'PL13 2ER', 'PL13 2ES', 'PL13 2EX', 'PL14 3LJ', 'PL14 4QX', 'PL14 6NG', 'PL15 7NW', 'PL15 8DH', 'PL15 8EX', 'PL15 8UW', 'PL15 9QN', 'PL15 9QP', 'PL16 0AH', 'PL16 0AJ', 'PL16 0AL', 'PL16 0EL', 'PL17 8LQ', 'PL17 8NJ', 'PL17 8NL', 'PL19 9PR', 'PL20 6SG', 'PL20 7SL', 'PL20 7SP', 'PL20 7SS', 'PL20 7TG', 'PL20 7TJ', 'PL20 7TZ', 'PL21 0LL', 'PL21 9NT', 'PL24 2AD', 'PL24 2AE', 'PL24 2AF', 'PL24 2AG', 'PL24 2AH', 'PL24 2AJ', 'PL24 2AN', 'PL24 2AQ', 'PL24 2AR', 'PL24 2AT', 'PL24 2AW', 'PL24 2AX', 'PL24 2AY', 'PL24 2BB', 'PL24 2BD', 'PL24 2DH', 'PL24 2DN', 'PL24 2HY', 'PL24 2JA', 'PL24 2JB', 'PL24 2JD', 'PL24 2JF', 'PL24 2JG', 'PL24 2JH', 'PL24 2JQ', 'PL24 2LU', 'PL24 2LX', 'PL24 2LZ', 'PL24 2ND', 'PL24 2NF', 'PL24 2NJ', 'PL24 2NS', 'PL24 2NU', 'PL24 2NX', 'PL24 2NY', 'PL24 2PA', 'PL24 2PB', 'PL24 2PD', 'PL24 2PE', 'PL24 2RF', 'PL24 2RL', 'PL24 2RN', 'PL24 2TW', 'PL25 5BU', 'PL26 6BT', 'PL26 6BU', 'PL26 6BX', 'PL26 6BZ', 'PL26 6DA', 'PL26 6DB', 'PL26 6DD', 'PL26 6DG', 'PL26 6RZ', 'PL26 7AA', 'PL26 7AD', 'PL26 7AE', 'PL26 7AR', 'PL26 7AS', 'PL26 7AX', 'PL26 7AY', 'PL26 7LL', 'PL3 6EE', 'PL30 5LF', 'PL30 5LL', 'PL32 9PB', 'PL32 9PD', 'PL32 9PG', 'PL32 9TL', 'PL5 4AQ', 'PL5 4LD', 'PL5 4NB', 'PL5 4NG', 'PL5 4NH', 'PL5 4NZ', 'PL7 1YB', 'PL8 2DY', 'PL8 2DZ', 'PL8 2EY', 'PL8 2LS', 'PL8 2LX', 'PL8 2NA', 'TQ10 9EF', 'TQ10 9ET', 'TQ10 9NB', 'TQ11 0AH', 'TQ11 0BA', 'TQ11 0BS', 'TQ11 0BT', 'TQ11 0BU', 'TQ11 0BY', 'TQ11 0BZ', 'TQ11 0EA', 'TQ11 0HE', 'TQ11 0NN', 'TQ11 0PF', 'TQ11 0QA', 'TQ12 3PF', 'TQ12 5UP', 'TQ12 6NL', 'TQ13 0NJ', 'TQ13 7DY', 'TQ13 7EJ', 'TQ13 7JG', 'TQ13 7QH', 'TQ13 7QL', 'TQ13 7QP', 'TQ13 7QW', 'TQ13 7RF', 'TQ13 7RN', 'TQ13 7TF', 'TQ13 7TG', 'TQ13 8JZ', 'TQ13 8LA', 'TQ13 8QY', 'TQ13 8SD', 'TQ13 9SS', 'TQ13 9SW', 'TQ13 9TB', 'TQ13 9TS', 'TQ14 8AB', 'TQ14 8AD', 'TQ14 8AE', 'TQ14 8AF', 'TQ14 8AH', 'TQ14 8AJ', 'TQ14 8AL', 'TQ14 8AS', 'TQ14 8AT', 'TQ14 8AU', 'TQ14 8AW', 'TQ14 8AX', 'TQ14 8AY', 'TQ14 8BG', 'TQ14 8BJ', 'TQ14 8BQ', 'TQ14 8BR', 'TQ14 8BT', 'TQ14 8BU', 'TQ14 8BX', 'TQ14 8BZ', 'TQ14 8DA', 'TQ14 8DB', 'TQ14 8DD', 'TQ14 8DE', 'TQ14 8DJ', 'TQ14 8DN', 'TQ14 8DS', 'TQ14 8EA', 'TQ14 8EB', 'TQ14 8EE', 'TQ14 8EF', 'TQ14 8EG', 'TQ14 8EN', 'TQ14 8EP', 'TQ14 8ES', 'TQ14 8FG', 'TQ14 8HH', 'TQ14 8HR', 'TQ14 8HT', 'TQ14 8HW', 'TQ14 8PE', 'TQ14 8SJ', 'TQ14 8SN', 'TQ14 8ST', 'TQ14 8SU', 'TQ14 8SW', 'TQ14 8SX', 'TQ14 8SY', 'TQ14 8SZ', 'TQ14 8TB', 'TQ7 2DN', 'TQ7 2QD', 'TQ7 2RE', 'TQ7 4DS', 'TQ9 6AH', 'TQ9 6NE', 'TQ9 6PD', 'TQ9 6RH', 'TQ9 6RL', 'TQ9 7AE', 'TQ9 7JT', 'TQ9 7LN', 'TQ9 7SR', 'TQ9 7SS', 'TQ9 7SU', 'TQ9 7SX', 'TQ9 7SZ', 'TQ9 7TA', 'TQ9 7TB', 'TQ9 7TH', 'TQ9 7TJ', 'TQ9 7TL', 'TQ9 7TP', 'TQ9 7TQ', 'TQ9 7TR', 'TQ9 7TS', 'TQ9 7TT', 'TQ9 7TU', 'TQ9 7TX', 'TQ9 7TY', 'TQ9 7UH', 'TR13 0PF', 'TR13 0RA', 'TR13 8HG', 'TR13 8HP', 'TR13 8HR', 'TR13 8HW', 'TR13 8HZ', 'TR17 0HJ', 'TR17 0HN', 'TR17 0HQ', 'TR18 3LL', 'TR19 7PG', 'TR19 7PH', 'TR19 7PN', 'TR19 7PQ', 'TR19 7PX', 'TR19 7TW', 'TR2 4AU', 'TR2 4EX', 'TR2 4HX', 'TR2 4PG', 'TR2 4PH', 'TR2 4PP', 'TR2 4PQ', 'TR2 4QB', 'TR2 4RU', 'TR2 4RX', 'TR2 4SB', 'TR20 9BL', 'TR3 6AA', 'TR3 7BT', 'TR3 7BU', 'TR3 7BX', 'TR3 7BY', 'TR3 7ND', 'TR4 8QZ', 'TR4 8RA', 'TR4 8RE', 'TR4 8RL', 'TR4 8RN', 'TR4 8SU', 'TR4 9PE', 'TR4 9QT', 'TR7 2HX', 'TR7 2RW', 'TR7 2TG', 'TR7 3BS', 'TR7 3PE', 'TR8 4BJ', 'TR8 4EP', 'TR8 4JW', 'TR8 4PU', 'TR8 4QE', 'TR8 5PS', 'TR9 6BD', 'TR9 6BY');
$banned = '/^('.implode('|', $banned).')/i';
if(preg_match($banned, $postcode))
{
$errorp = 'Your property is in a high risk area and must be referred to Zurich. Please call us on 08450 264420 to see if we can quote';
return false;
}
$prefixes = '/^(ex|pl|tq|tr)/i';
if(!preg_match($prefixes, $postcode))
{
$errorp = 'We can only quote for EX, PL, TQ & TR postcodes';
return false;
}
$errorp = '';
return true;
}
?>
bokeh
03-16-2006, 05:10 AM
if(!preg_match($syntax, $postcode, $matches))
{
$postcode = strtoupper ($matches[1] . ' ' . $matches [2]); // In case it fails.
$errorp = 'Invalid entry';
return false;
}The former block of code is utter nonsense. What it says is if preg_match fails use the result of preg_match ($matches[1] and $matches[2]) as if the function had been succesful (even though we are only in this block because it failed) to reformate the postcode. But since $matches[1] and $matches[2] are not even set variables, $postcode will now equate to zilch.
If you set your error reporting level to E_ALL stupid errors like this will immediately present themselves.
Also I don't understand why $banned is being included as a second argument to the function when infact it is an internal variable.
chazzy
03-16-2006, 09:16 AM
Why exactly are you being overly complicated with it?
Couldn't you just use in_array (http://us2.php.net/manual/en/function.in-array.php)? this will tell you if the passed in code is rejected. then you can just do the same thing w/ a substring of the code and make an array of the valid first 2 characters for shipping.
peteyb
03-16-2006, 10:03 AM
i do not know/understand where it is overly complicated but the reason to have the output in capitals is for aethetical reasons.
is it possible, and, if the script is so poor, can you update it to fulfil it current requirements?
bokeh
03-16-2006, 10:17 AM
The thing is every time someone fixes it you do some modification and break it again.
peteyb
03-16-2006, 10:47 AM
ok, i admit, the needs of the function have changed since first started.
do you know how to make it so that the allowed results are printed in capitals? and i will promise to leave the code alone and be satisfied!!!!
bokeh
03-16-2006, 01:03 PM
If you have a postal code like this "a5gh6sr" nothing will sort it out because since the grammar is wrong it is impossible to know where to split it and there is no point anyway because it is wrong. The best that can be done is convert it to upper case. The following will do that as well as formatting, and test and producing errors for well formed postcodes.function checkPostcode (&$postcode, &$error)
{
$postcode = strtoupper($postcode);
$syntax = '/^([A-Z]{1,2}[0-9]{1,2})\s?([0-9]{1}[A-Z]{2})$/';
if(!preg_match($syntax, $postcode, $matches))
{
$error = 'Invalid postcode syntax';
return false;
}
$postcode = $matches[1] . ' ' . $matches [2];
$banned = array('EX10 0AF', 'EX10 0JX', 'EX10 0LB', 'EX10 0LD', 'EX10 0LJ', 'EX10 0LW', 'EX10 0LD', 'EX10 0NG', 'EX10 0SF', 'EX10 9PN', 'EX10 0LD', 'EX11 1LU', 'EX11 1NF', 'EX12 4AF', 'EX13 5RS', 'EX13 7LF', 'EX13 7LN', 'EX13 7LW', 'EX13 7NN', 'EX13 7PE', 'EX13 7PG', 'EX13 7PJ', 'EX13 7PN', 'EX13 7PP', 'EX13 7PQ', 'EX13 7RG', 'EX14 3HE', 'EX14 3NZ', 'EX15 1BH', 'EX15 1BS', 'EX15 1BW', 'EX15 1NX', 'EX15 1PA', 'EX15 1QL', 'EX15 1XL', 'EX15 2LQ', 'EX15 2ND', 'EX15 2NW', 'EX15 2RB', 'EX15 3AR', 'EX15 3DB', 'EX15 3DR', 'EX15 3HG', 'EX15 3JJ', 'EX15 3JL', 'EX16 4NA', 'EX16 5AA', 'EX16 5AD', 'EX16 5AE', 'EX16 5HY', 'EX16 5JL', 'EX16 5JN', 'EX16 5JP', 'EX16 5JR', 'EX16 5JT', 'EX16 5JU', 'EX16 5JW', 'EX16 5LE', 'EX16 5LF', 'EX16 5LG', 'EX16 5LH', 'EX16 5LJ', 'EX16 5LQ', 'EX16 5LZ', 'EX16 5QG', 'EX16 6HA', 'EX16 6HX', 'EX16 6JQ', 'EX16 6RZ', 'EX16 6SB', 'EX16 6SW', 'EX16 6TG', 'EX16 6TR', 'EX16 7JH', 'EX16 7JQ', 'EX16 7RA', 'EX16 7RB', 'EX16 7RJ', 'EX16 8HD', 'EX16 8HJ', 'EX16 8LA', 'EX16 8PU', 'EX16 8RG', 'EX16 8RP', 'EX16 8RW', 'EX16 8SA', 'EX16 9AF', 'EX16 9AY', 'EX16 9DX', 'EX16 9JA', 'EX16 9PD', 'EX16 9PY', 'EX17 3DH', 'EX17 3PS', 'EX17 3QN', 'EX17 4SL', 'EX17 5AX', 'EX17 5HU', 'EX17 5JB', 'EX17 5LW', 'EX17 5PW', 'EX17 6HZ', 'EX18 7EA', 'EX18 7LF', 'EX18 7PL', 'EX18 7SL', 'EX19 8AZ', 'EX2 6LH', 'EX2 6LL', 'EX2 6LR', 'EX2 6LW', 'EX2 6LX', 'EX2 6LY', 'EX20 2AB', 'EX20 2AH', 'EX20 2AJ', 'EX20 2EE', 'EX20 2EF', 'EX20 2LZ', 'EX20 2NH', 'EX20 2NP', 'EX20 2NR', 'EX20 2SE', 'EX20 3EG', 'EX20 3NE', 'EX22 7UW', 'EX23 9BN', 'EX23 9BP', 'EX23 9BW', 'EX24 6QF', 'EX3 0PA', 'EX3 0PB', 'EX31 3JH', 'EX31 4AP', 'EX31 4AW', 'EX31 4HG', 'EX31 4LR', 'EX31 4QB', 'EX31 4RU', 'EX31 4ST', 'EX31 4TT', 'EX32 0LX', 'EX32 0LZ', 'EX32 0ND', 'EX32 0RJ', 'EX33 2NX', 'EX34 0AE', 'EX34 0AF', 'EX34 0AJ', 'EX34 0AN', 'EX34 0AQ', 'EX34 0NA', 'EX34 0PJ', 'EX35 6NX', 'EX36 3DT', 'EX36 3EP', 'EX36 3JH', 'EX36 3JJ', 'EX36 3JL', 'EX36 3LE', 'EX36 3LZ', 'EX36 3NW', 'EX36 3PS', 'EX36 4HX', 'EX36 4JJ', 'EX36 4JL', 'EX36 4LG', 'EX36 4LQ', 'EX36 4PN', 'EX36 4QD', 'EX36 4RT', 'EX37 9AB', 'EX37 9AG', 'EX37 9AR', 'EX37 9DA', 'EX37 9HR', 'EX37 9JS', 'EX37 9NB', 'EX37 9RE', 'EX38 7EJ', 'EX38 7HD', 'EX38 8AS', 'EX38 8AT', 'EX38 8AW', 'EX38 8JD', 'EX38 8JE', 'EX39 4QT', 'EX39 6DS', 'EX39 6DY', 'EX39 6EA', 'EX39 6HL', 'EX4 2HA', 'EX4 5AD', 'EX5 1BT', 'EX5 1BX', 'EX5 2NG', 'EX5 2NH', 'EX5 2NJ', 'EX5 4BR', 'EX5 4BS', 'EX5 4BT', 'EX5 4LD', 'EX5 5AB', 'EX5 5AE', 'EX5 5EQ', 'EX5 5LX', 'EX5 5LY', 'EX6 7HE', 'EX6 7PW', 'EX6 7QL', 'EX6 7QN', 'EX6 7TA', 'EX6 7TB', 'EX6 7TD', 'EX6 7TF', 'EX6 7TG', 'EX6 7TH', 'EX6 7TJ', 'EX6 7TL', 'EX6 7TN', 'EX6 7UT', 'EX6 8JS', 'EX7 9AE', 'EX7 9BJ', 'EX7 9PY', 'EX8 5ER', 'EX8 5EY', 'EX8 5EZ', 'EX8 5HH', 'EX8 5HQ', 'EX9 7AZ', 'PL10 1BY', 'PL12 5BG', 'PL13 2EP', 'PL13 2ER', 'PL13 2ES', 'PL13 2EX', 'PL14 3LJ', 'PL14 4QX', 'PL14 6NG', 'PL15 7NW', 'PL15 8DH', 'PL15 8EX', 'PL15 8UW', 'PL15 9QN', 'PL15 9QP', 'PL16 0AH', 'PL16 0AJ', 'PL16 0AL', 'PL16 0EL', 'PL17 8LQ', 'PL17 8NJ', 'PL17 8NL', 'PL19 9PR', 'PL20 6SG', 'PL20 7SL', 'PL20 7SP', 'PL20 7SS', 'PL20 7TG', 'PL20 7TJ', 'PL20 7TZ', 'PL21 0LL', 'PL21 9NT', 'PL24 2AD', 'PL24 2AE', 'PL24 2AF', 'PL24 2AG', 'PL24 2AH', 'PL24 2AJ', 'PL24 2AN', 'PL24 2AQ', 'PL24 2AR', 'PL24 2AT', 'PL24 2AW', 'PL24 2AX', 'PL24 2AY', 'PL24 2BB', 'PL24 2BD', 'PL24 2DH', 'PL24 2DN', 'PL24 2HY', 'PL24 2JA', 'PL24 2JB', 'PL24 2JD', 'PL24 2JF', 'PL24 2JG', 'PL24 2JH', 'PL24 2JQ', 'PL24 2LU', 'PL24 2LX', 'PL24 2LZ', 'PL24 2ND', 'PL24 2NF', 'PL24 2NJ', 'PL24 2NS', 'PL24 2NU', 'PL24 2NX', 'PL24 2NY', 'PL24 2PA', 'PL24 2PB', 'PL24 2PD', 'PL24 2PE', 'PL24 2RF', 'PL24 2RL', 'PL24 2RN', 'PL24 2TW', 'PL25 5BU', 'PL26 6BT', 'PL26 6BU', 'PL26 6BX', 'PL26 6BZ', 'PL26 6DA', 'PL26 6DB', 'PL26 6DD', 'PL26 6DG', 'PL26 6RZ', 'PL26 7AA', 'PL26 7AD', 'PL26 7AE', 'PL26 7AR', 'PL26 7AS', 'PL26 7AX', 'PL26 7AY', 'PL26 7LL', 'PL3 6EE', 'PL30 5LF', 'PL30 5LL', 'PL32 9PB', 'PL32 9PD', 'PL32 9PG', 'PL32 9TL', 'PL5 4AQ', 'PL5 4LD', 'PL5 4NB', 'PL5 4NG', 'PL5 4NH', 'PL5 4NZ', 'PL7 1YB', 'PL8 2DY', 'PL8 2DZ', 'PL8 2EY', 'PL8 2LS', 'PL8 2LX', 'PL8 2NA', 'TQ10 9EF', 'TQ10 9ET', 'TQ10 9NB', 'TQ11 0AH', 'TQ11 0BA', 'TQ11 0BS', 'TQ11 0BT', 'TQ11 0BU', 'TQ11 0BY', 'TQ11 0BZ', 'TQ11 0EA', 'TQ11 0HE', 'TQ11 0NN', 'TQ11 0PF', 'TQ11 0QA', 'TQ12 3PF', 'TQ12 5UP', 'TQ12 6NL', 'TQ13 0NJ', 'TQ13 7DY', 'TQ13 7EJ', 'TQ13 7JG', 'TQ13 7QH', 'TQ13 7QL', 'TQ13 7QP', 'TQ13 7QW', 'TQ13 7RF', 'TQ13 7RN', 'TQ13 7TF', 'TQ13 7TG', 'TQ13 8JZ', 'TQ13 8LA', 'TQ13 8QY', 'TQ13 8SD', 'TQ13 9SS', 'TQ13 9SW', 'TQ13 9TB', 'TQ13 9TS', 'TQ14 8AB', 'TQ14 8AD', 'TQ14 8AE', 'TQ14 8AF', 'TQ14 8AH', 'TQ14 8AJ', 'TQ14 8AL', 'TQ14 8AS', 'TQ14 8AT', 'TQ14 8AU', 'TQ14 8AW', 'TQ14 8AX', 'TQ14 8AY', 'TQ14 8BG', 'TQ14 8BJ', 'TQ14 8BQ', 'TQ14 8BR', 'TQ14 8BT', 'TQ14 8BU', 'TQ14 8BX', 'TQ14 8BZ', 'TQ14 8DA', 'TQ14 8DB', 'TQ14 8DD', 'TQ14 8DE', 'TQ14 8DJ', 'TQ14 8DN', 'TQ14 8DS', 'TQ14 8EA', 'TQ14 8EB', 'TQ14 8EE', 'TQ14 8EF', 'TQ14 8EG', 'TQ14 8EN', 'TQ14 8EP', 'TQ14 8ES', 'TQ14 8FG', 'TQ14 8HH', 'TQ14 8HR', 'TQ14 8HT', 'TQ14 8HW', 'TQ14 8PE', 'TQ14 8SJ', 'TQ14 8SN', 'TQ14 8ST', 'TQ14 8SU', 'TQ14 8SW', 'TQ14 8SX', 'TQ14 8SY', 'TQ14 8SZ', 'TQ14 8TB', 'TQ7 2DN', 'TQ7 2QD', 'TQ7 2RE', 'TQ7 4DS', 'TQ9 6AH', 'TQ9 6NE', 'TQ9 6PD', 'TQ9 6RH', 'TQ9 6RL', 'TQ9 7AE', 'TQ9 7JT', 'TQ9 7LN', 'TQ9 7SR', 'TQ9 7SS', 'TQ9 7SU', 'TQ9 7SX', 'TQ9 7SZ', 'TQ9 7TA', 'TQ9 7TB', 'TQ9 7TH', 'TQ9 7TJ', 'TQ9 7TL', 'TQ9 7TP', 'TQ9 7TQ', 'TQ9 7TR', 'TQ9 7TS', 'TQ9 7TT', 'TQ9 7TU', 'TQ9 7TX', 'TQ9 7TY', 'TQ9 7UH', 'TR13 0PF', 'TR13 0RA', 'TR13 8HG', 'TR13 8HP', 'TR13 8HR', 'TR13 8HW', 'TR13 8HZ', 'TR17 0HJ', 'TR17 0HN', 'TR17 0HQ', 'TR18 3LL', 'TR19 7PG', 'TR19 7PH', 'TR19 7PN', 'TR19 7PQ', 'TR19 7PX', 'TR19 7TW', 'TR2 4AU', 'TR2 4EX', 'TR2 4HX', 'TR2 4PG', 'TR2 4PH', 'TR2 4PP', 'TR2 4PQ', 'TR2 4QB', 'TR2 4RU', 'TR2 4RX', 'TR2 4SB', 'TR20 9BL', 'TR3 6AA', 'TR3 7BT', 'TR3 7BU', 'TR3 7BX', 'TR3 7BY', 'TR3 7ND', 'TR4 8QZ', 'TR4 8RA', 'TR4 8RE', 'TR4 8RL', 'TR4 8RN', 'TR4 8SU', 'TR4 9PE', 'TR4 9QT', 'TR7 2HX', 'TR7 2RW', 'TR7 2TG', 'TR7 3BS', 'TR7 3PE', 'TR8 4BJ', 'TR8 4EP', 'TR8 4JW', 'TR8 4PU', 'TR8 4QE', 'TR8 5PS', 'TR9 6BD', 'TR9 6BY');
if(in_array($postcode, $banned))
{
$errorp = 'Your property is in a high risk area and must be referred to Zurich. Please call us on 08450 264420 to see if we can quote';
return false;
}
$prefixes = '/^(EX|PL|TQ|TR)/';
if(!preg_match($prefixes, $postcode))
{
$error = 'We can only quote for EX, PL, TQ & TR postcodes';
return false;
}
$error = NULL;
return true;
}
chazzy
03-16-2006, 01:19 PM
petey-
It's overly complicated because you don't need a regular expression to determine this.
function checkPostcode ($postcode, &$errorp)
{
// format the postcode before we continue.
//$postcode = strtoupper ($matches[1] . ' ' . $matches [2]);
$postcode=strtoupper($postcode);
$banned = array('EX10 0AF', 'EX10 0JX', 'EX10 0LB', 'EX10 0LD', 'EX10 0LJ', 'EX10 0LW', 'EX10 0LD', 'EX10 0NG', 'EX10 0SF', 'EX10 9PN', 'EX10 0LD', 'EX11 1LU', 'EX11 1NF', 'EX12 4AF', 'EX13 5RS', 'EX13 7LF', 'EX13 7LN', 'EX13 7LW', 'EX13 7NN', 'EX13 7PE', 'EX13 7PG', 'EX13 7PJ', 'EX13 7PN', 'EX13 7PP', 'EX13 7PQ', 'EX13 7RG', 'EX14 3HE', 'EX14 3NZ', 'EX15 1BH', 'EX15 1BS', 'EX15 1BW', 'EX15 1NX', 'EX15 1PA', 'EX15 1QL', 'EX15 1XL', 'EX15 2LQ', 'EX15 2ND', 'EX15 2NW', 'EX15 2RB', 'EX15 3AR', 'EX15 3DB', 'EX15 3DR', 'EX15 3HG', 'EX15 3JJ', 'EX15 3JL', 'EX16 4NA', 'EX16 5AA', 'EX16 5AD', 'EX16 5AE', 'EX16 5HY', 'EX16 5JL', 'EX16 5JN', 'EX16 5JP', 'EX16 5JR', 'EX16 5JT', 'EX16 5JU', 'EX16 5JW', 'EX16 5LE', 'EX16 5LF', 'EX16 5LG', 'EX16 5LH', 'EX16 5LJ', 'EX16 5LQ', 'EX16 5LZ', 'EX16 5QG', 'EX16 6HA', 'EX16 6HX', 'EX16 6JQ', 'EX16 6RZ', 'EX16 6SB', 'EX16 6SW', 'EX16 6TG', 'EX16 6TR', 'EX16 7JH', 'EX16 7JQ', 'EX16 7RA', 'EX16 7RB', 'EX16 7RJ', 'EX16 8HD', 'EX16 8HJ', 'EX16 8LA', 'EX16 8PU', 'EX16 8RG', 'EX16 8RP', 'EX16 8RW', 'EX16 8SA', 'EX16 9AF', 'EX16 9AY', 'EX16 9DX', 'EX16 9JA', 'EX16 9PD', 'EX16 9PY', 'EX17 3DH', 'EX17 3PS', 'EX17 3QN', 'EX17 4SL', 'EX17 5AX', 'EX17 5HU', 'EX17 5JB', 'EX17 5LW', 'EX17 5PW', 'EX17 6HZ', 'EX18 7EA', 'EX18 7LF', 'EX18 7PL', 'EX18 7SL', 'EX19 8AZ', 'EX2 6LH', 'EX2 6LL', 'EX2 6LR', 'EX2 6LW', 'EX2 6LX', 'EX2 6LY', 'EX20 2AB', 'EX20 2AH', 'EX20 2AJ', 'EX20 2EE', 'EX20 2EF', 'EX20 2LZ', 'EX20 2NH', 'EX20 2NP', 'EX20 2NR', 'EX20 2SE', 'EX20 3EG', 'EX20 3NE', 'EX22 7UW', 'EX23 9BN', 'EX23 9BP', 'EX23 9BW', 'EX24 6QF', 'EX3 0PA', 'EX3 0PB', 'EX31 3JH', 'EX31 4AP', 'EX31 4AW', 'EX31 4HG', 'EX31 4LR', 'EX31 4QB', 'EX31 4RU', 'EX31 4ST', 'EX31 4TT', 'EX32 0LX', 'EX32 0LZ', 'EX32 0ND', 'EX32 0RJ', 'EX33 2NX', 'EX34 0AE', 'EX34 0AF', 'EX34 0AJ', 'EX34 0AN', 'EX34 0AQ', 'EX34 0NA', 'EX34 0PJ', 'EX35 6NX', 'EX36 3DT', 'EX36 3EP', 'EX36 3JH', 'EX36 3JJ', 'EX36 3JL', 'EX36 3LE', 'EX36 3LZ', 'EX36 3NW', 'EX36 3PS', 'EX36 4HX', 'EX36 4JJ', 'EX36 4JL', 'EX36 4LG', 'EX36 4LQ', 'EX36 4PN', 'EX36 4QD', 'EX36 4RT', 'EX37 9AB', 'EX37 9AG', 'EX37 9AR', 'EX37 9DA', 'EX37 9HR', 'EX37 9JS', 'EX37 9NB', 'EX37 9RE', 'EX38 7EJ', 'EX38 7HD', 'EX38 8AS', 'EX38 8AT', 'EX38 8AW', 'EX38 8JD', 'EX38 8JE', 'EX39 4QT', 'EX39 6DS', 'EX39 6DY', 'EX39 6EA', 'EX39 6HL', 'EX4 2HA', 'EX4 5AD', 'EX5 1BT', 'EX5 1BX', 'EX5 2NG', 'EX5 2NH', 'EX5 2NJ', 'EX5 4BR', 'EX5 4BS', 'EX5 4BT', 'EX5 4LD', 'EX5 5AB', 'EX5 5AE', 'EX5 5EQ', 'EX5 5LX', 'EX5 5LY', 'EX6 7HE', 'EX6 7PW', 'EX6 7QL', 'EX6 7QN', 'EX6 7TA', 'EX6 7TB', 'EX6 7TD', 'EX6 7TF', 'EX6 7TG', 'EX6 7TH', 'EX6 7TJ', 'EX6 7TL', 'EX6 7TN', 'EX6 7UT', 'EX6 8JS', 'EX7 9AE', 'EX7 9BJ', 'EX7 9PY', 'EX8 5ER', 'EX8 5EY', 'EX8 5EZ', 'EX8 5HH', 'EX8 5HQ', 'EX9 7AZ', 'PL10 1BY', 'PL12 5BG', 'PL13 2EP', 'PL13 2ER', 'PL13 2ES', 'PL13 2EX', 'PL14 3LJ', 'PL14 4QX', 'PL14 6NG', 'PL15 7NW', 'PL15 8DH', 'PL15 8EX', 'PL15 8UW', 'PL15 9QN', 'PL15 9QP', 'PL16 0AH', 'PL16 0AJ', 'PL16 0AL', 'PL16 0EL', 'PL17 8LQ', 'PL17 8NJ', 'PL17 8NL', 'PL19 9PR', 'PL20 6SG', 'PL20 7SL', 'PL20 7SP', 'PL20 7SS', 'PL20 7TG', 'PL20 7TJ', 'PL20 7TZ', 'PL21 0LL', 'PL21 9NT', 'PL24 2AD', 'PL24 2AE', 'PL24 2AF', 'PL24 2AG', 'PL24 2AH', 'PL24 2AJ', 'PL24 2AN', 'PL24 2AQ', 'PL24 2AR', 'PL24 2AT', 'PL24 2AW', 'PL24 2AX', 'PL24 2AY', 'PL24 2BB', 'PL24 2BD', 'PL24 2DH', 'PL24 2DN', 'PL24 2HY', 'PL24 2JA', 'PL24 2JB', 'PL24 2JD', 'PL24 2JF', 'PL24 2JG', 'PL24 2JH', 'PL24 2JQ', 'PL24 2LU', 'PL24 2LX', 'PL24 2LZ', 'PL24 2ND', 'PL24 2NF', 'PL24 2NJ', 'PL24 2NS', 'PL24 2NU', 'PL24 2NX', 'PL24 2NY', 'PL24 2PA', 'PL24 2PB', 'PL24 2PD', 'PL24 2PE', 'PL24 2RF', 'PL24 2RL', 'PL24 2RN', 'PL24 2TW', 'PL25 5BU', 'PL26 6BT', 'PL26 6BU', 'PL26 6BX', 'PL26 6BZ', 'PL26 6DA', 'PL26 6DB', 'PL26 6DD', 'PL26 6DG', 'PL26 6RZ', 'PL26 7AA', 'PL26 7AD', 'PL26 7AE', 'PL26 7AR', 'PL26 7AS', 'PL26 7AX', 'PL26 7AY', 'PL26 7LL', 'PL3 6EE', 'PL30 5LF', 'PL30 5LL', 'PL32 9PB', 'PL32 9PD', 'PL32 9PG', 'PL32 9TL', 'PL5 4AQ', 'PL5 4LD', 'PL5 4NB', 'PL5 4NG', 'PL5 4NH', 'PL5 4NZ', 'PL7 1YB', 'PL8 2DY', 'PL8 2DZ', 'PL8 2EY', 'PL8 2LS', 'PL8 2LX', 'PL8 2NA', 'TQ10 9EF', 'TQ10 9ET', 'TQ10 9NB', 'TQ11 0AH', 'TQ11 0BA', 'TQ11 0BS', 'TQ11 0BT', 'TQ11 0BU', 'TQ11 0BY', 'TQ11 0BZ', 'TQ11 0EA', 'TQ11 0HE', 'TQ11 0NN', 'TQ11 0PF', 'TQ11 0QA', 'TQ12 3PF', 'TQ12 5UP', 'TQ12 6NL', 'TQ13 0NJ', 'TQ13 7DY', 'TQ13 7EJ', 'TQ13 7JG', 'TQ13 7QH', 'TQ13 7QL', 'TQ13 7QP', 'TQ13 7QW', 'TQ13 7RF', 'TQ13 7RN', 'TQ13 7TF', 'TQ13 7TG', 'TQ13 8JZ', 'TQ13 8LA', 'TQ13 8QY', 'TQ13 8SD', 'TQ13 9SS', 'TQ13 9SW', 'TQ13 9TB', 'TQ13 9TS', 'TQ14 8AB', 'TQ14 8AD', 'TQ14 8AE', 'TQ14 8AF', 'TQ14 8AH', 'TQ14 8AJ', 'TQ14 8AL', 'TQ14 8AS', 'TQ14 8AT', 'TQ14 8AU', 'TQ14 8AW', 'TQ14 8AX', 'TQ14 8AY', 'TQ14 8BG', 'TQ14 8BJ', 'TQ14 8BQ', 'TQ14 8BR', 'TQ14 8BT', 'TQ14 8BU', 'TQ14 8BX', 'TQ14 8BZ', 'TQ14 8DA', 'TQ14 8DB', 'TQ14 8DD', 'TQ14 8DE', 'TQ14 8DJ', 'TQ14 8DN', 'TQ14 8DS', 'TQ14 8EA', 'TQ14 8EB', 'TQ14 8EE', 'TQ14 8EF', 'TQ14 8EG', 'TQ14 8EN', 'TQ14 8EP', 'TQ14 8ES', 'TQ14 8FG', 'TQ14 8HH', 'TQ14 8HR', 'TQ14 8HT', 'TQ14 8HW', 'TQ14 8PE', 'TQ14 8SJ', 'TQ14 8SN', 'TQ14 8ST', 'TQ14 8SU', 'TQ14 8SW', 'TQ14 8SX', 'TQ14 8SY', 'TQ14 8SZ', 'TQ14 8TB', 'TQ7 2DN', 'TQ7 2QD', 'TQ7 2RE', 'TQ7 4DS', 'TQ9 6AH', 'TQ9 6NE', 'TQ9 6PD', 'TQ9 6RH', 'TQ9 6RL', 'TQ9 7AE', 'TQ9 7JT', 'TQ9 7LN', 'TQ9 7SR', 'TQ9 7SS', 'TQ9 7SU', 'TQ9 7SX', 'TQ9 7SZ', 'TQ9 7TA', 'TQ9 7TB', 'TQ9 7TH', 'TQ9 7TJ', 'TQ9 7TL', 'TQ9 7TP', 'TQ9 7TQ', 'TQ9 7TR', 'TQ9 7TS', 'TQ9 7TT', 'TQ9 7TU', 'TQ9 7TX', 'TQ9 7TY', 'TQ9 7UH', 'TR13 0PF', 'TR13 0RA', 'TR13 8HG', 'TR13 8HP', 'TR13 8HR', 'TR13 8HW', 'TR13 8HZ', 'TR17 0HJ', 'TR17 0HN', 'TR17 0HQ', 'TR18 3LL', 'TR19 7PG', 'TR19 7PH', 'TR19 7PN', 'TR19 7PQ', 'TR19 7PX', 'TR19 7TW', 'TR2 4AU', 'TR2 4EX', 'TR2 4HX', 'TR2 4PG', 'TR2 4PH', 'TR2 4PP', 'TR2 4PQ', 'TR2 4QB', 'TR2 4RU', 'TR2 4RX', 'TR2 4SB', 'TR20 9BL', 'TR3 6AA', 'TR3 7BT', 'TR3 7BU', 'TR3 7BX', 'TR3 7BY', 'TR3 7ND', 'TR4 8QZ', 'TR4 8RA', 'TR4 8RE', 'TR4 8RL', 'TR4 8RN', 'TR4 8SU', 'TR4 9PE', 'TR4 9QT', 'TR7 2HX', 'TR7 2RW', 'TR7 2TG', 'TR7 3BS', 'TR7 3PE', 'TR8 4BJ', 'TR8 4EP', 'TR8 4JW', 'TR8 4PU', 'TR8 4QE', 'TR8 5PS', 'TR9 6BD', 'TR9 6BY');
if(in_array($postcode, $banned))
{
$errorp = 'Your property is in a high risk area and must be referred to Zurich. Please call us on 08450 264420 to see if we can quote';
return false;
}
$prefixes = array('EX','PL','TQ','TR');
$postcode_prefix = substr($postcode,0,2);
if(!in_array($postcode_prefix, $prefixes))
{
$errorp = 'We can only quote for EX, PL, TQ & TR postcodes';
return false;
}
$errorp = '';
return true;
}
?>
I think the biggest issue is that we don't see where you're defining matches. You really don't need to do it via regex.
bokeh
03-16-2006, 04:20 PM
Chazzy this leads on from another thread. He also wanted to check that the postcode syntax is correct. That is what the rexex is for.
chazzy
03-16-2006, 08:53 PM
To me at least, it's overly complicated to run regex to check that the item exists in his array. You cna just break the inputcode into an array and check each piece independently (length, style, etc) but at least to me, using it to check the existence in the array isn't great.
peteyb
03-17-2006, 03:59 AM
morning all.
sorry to bring this across from another thread but i couldnt find it.
bokeh, im finding that the code you scripted is only making the text capitalised when there is an error but not when the string is allowed.
chazzy
03-17-2006, 08:22 AM
how about this:
- use the code previously given to you to verify that it has the correct format.
- use !in_array to verify that the item does not exist inside the bad array
- use in_array for the first 2 characters to check that it exists.
bokeh
03-17-2006, 09:26 AM
To me at least, it's overly complicated to run regex to check that the item existsThe original function contained one REGEX which checked the syntax, prefix and banned array all in one hit. The reason the script got messy is because later the poster wanted to produce different error messages in each instance.bokeh, im finding that the code you scripted is only making the text capitalised when there is an error but not when the string is allowed.I don't know what you are talking about. I have posted my test which seems to work correctly. What are you doing differently?<?php
# test a few section
# Bad syntax
$postcode = 'h3d5f2';
checkPostcode($postcode, $error);
echo 'Bad syntax: '.$postcode .'<br>'.(($error)?$error:'The error string is empty')."<br><br>\n";
# Non matched prefix
$postcode = 'ha45ft';
checkPostcode($postcode, $error);
echo 'Non matched prefix: '.$postcode .'<br>'.(($error)?$error:'The error string is empty')."<br><br>\n";
# Banned
$postcode = 'Ex10 0Lb';
checkPostcode($postcode, $error);
echo 'Banned: '.$postcode .'<br>'.(($error)?$error:'The error string is empty')."<br><br>\n";
# Good
$postcode = 'ex10 0aa';
checkPostcode($postcode, $error);
echo 'Good: '.$postcode .'<br>'.(($error)?$error:'The error string is empty')."<br><br>\n";
# end test section
function checkPostcode(&$postcode, &$error)
{
$postcode = strtoupper($postcode);
$syntax = '/^([A-Z]{1,2}[0-9]{1,2})\s?([0-9]{1}[A-Z]{2})$/';
if(!preg_match($syntax, $postcode, $matches))
{
$error = 'Invalid postcode syntax';
return false;
}
$postcode = $matches[1] . ' ' . $matches [2];
$banned = array('EX10 0AF', 'EX10 0JX', 'EX10 0LB', 'EX10 0LD', 'EX10 0LJ', 'EX10 0LW', 'EX10 0LD', 'EX10 0NG', 'EX10 0SF', 'EX10 9PN', 'EX10 0LD', 'EX11 1LU', 'EX11 1NF', 'EX12 4AF', 'EX13 5RS', 'EX13 7LF', 'EX13 7LN', 'EX13 7LW', 'EX13 7NN', 'EX13 7PE', 'EX13 7PG', 'EX13 7PJ', 'EX13 7PN', 'EX13 7PP', 'EX13 7PQ', 'EX13 7RG', 'EX14 3HE', 'EX14 3NZ', 'EX15 1BH', 'EX15 1BS', 'EX15 1BW', 'EX15 1NX', 'EX15 1PA', 'EX15 1QL', 'EX15 1XL', 'EX15 2LQ', 'EX15 2ND', 'EX15 2NW', 'EX15 2RB', 'EX15 3AR', 'EX15 3DB', 'EX15 3DR', 'EX15 3HG', 'EX15 3JJ', 'EX15 3JL', 'EX16 4NA', 'EX16 5AA', 'EX16 5AD', 'EX16 5AE', 'EX16 5HY', 'EX16 5JL', 'EX16 5JN', 'EX16 5JP', 'EX16 5JR', 'EX16 5JT', 'EX16 5JU', 'EX16 5JW', 'EX16 5LE', 'EX16 5LF', 'EX16 5LG', 'EX16 5LH', 'EX16 5LJ', 'EX16 5LQ', 'EX16 5LZ', 'EX16 5QG', 'EX16 6HA', 'EX16 6HX', 'EX16 6JQ', 'EX16 6RZ', 'EX16 6SB', 'EX16 6SW', 'EX16 6TG', 'EX16 6TR', 'EX16 7JH', 'EX16 7JQ', 'EX16 7RA', 'EX16 7RB', 'EX16 7RJ', 'EX16 8HD', 'EX16 8HJ', 'EX16 8LA', 'EX16 8PU', 'EX16 8RG', 'EX16 8RP', 'EX16 8RW', 'EX16 8SA', 'EX16 9AF', 'EX16 9AY', 'EX16 9DX', 'EX16 9JA', 'EX16 9PD', 'EX16 9PY', 'EX17 3DH', 'EX17 3PS', 'EX17 3QN', 'EX17 4SL', 'EX17 5AX', 'EX17 5HU', 'EX17 5JB', 'EX17 5LW', 'EX17 5PW', 'EX17 6HZ', 'EX18 7EA', 'EX18 7LF', 'EX18 7PL', 'EX18 7SL', 'EX19 8AZ', 'EX2 6LH', 'EX2 6LL', 'EX2 6LR', 'EX2 6LW', 'EX2 6LX', 'EX2 6LY', 'EX20 2AB', 'EX20 2AH', 'EX20 2AJ', 'EX20 2EE', 'EX20 2EF', 'EX20 2LZ', 'EX20 2NH', 'EX20 2NP', 'EX20 2NR', 'EX20 2SE', 'EX20 3EG', 'EX20 3NE', 'EX22 7UW', 'EX23 9BN', 'EX23 9BP', 'EX23 9BW', 'EX24 6QF', 'EX3 0PA', 'EX3 0PB', 'EX31 3JH', 'EX31 4AP', 'EX31 4AW', 'EX31 4HG', 'EX31 4LR', 'EX31 4QB', 'EX31 4RU', 'EX31 4ST', 'EX31 4TT', 'EX32 0LX', 'EX32 0LZ', 'EX32 0ND', 'EX32 0RJ', 'EX33 2NX', 'EX34 0AE', 'EX34 0AF', 'EX34 0AJ', 'EX34 0AN', 'EX34 0AQ', 'EX34 0NA', 'EX34 0PJ', 'EX35 6NX', 'EX36 3DT', 'EX36 3EP', 'EX36 3JH', 'EX36 3JJ', 'EX36 3JL', 'EX36 3LE', 'EX36 3LZ', 'EX36 3NW', 'EX36 3PS', 'EX36 4HX', 'EX36 4JJ', 'EX36 4JL', 'EX36 4LG', 'EX36 4LQ', 'EX36 4PN', 'EX36 4QD', 'EX36 4RT', 'EX37 9AB', 'EX37 9AG', 'EX37 9AR', 'EX37 9DA', 'EX37 9HR', 'EX37 9JS', 'EX37 9NB', 'EX37 9RE', 'EX38 7EJ', 'EX38 7HD', 'EX38 8AS', 'EX38 8AT', 'EX38 8AW', 'EX38 8JD', 'EX38 8JE', 'EX39 4QT', 'EX39 6DS', 'EX39 6DY', 'EX39 6EA', 'EX39 6HL', 'EX4 2HA', 'EX4 5AD', 'EX5 1BT', 'EX5 1BX', 'EX5 2NG', 'EX5 2NH', 'EX5 2NJ', 'EX5 4BR', 'EX5 4BS', 'EX5 4BT', 'EX5 4LD', 'EX5 5AB', 'EX5 5AE', 'EX5 5EQ', 'EX5 5LX', 'EX5 5LY', 'EX6 7HE', 'EX6 7PW', 'EX6 7QL', 'EX6 7QN', 'EX6 7TA', 'EX6 7TB', 'EX6 7TD', 'EX6 7TF', 'EX6 7TG', 'EX6 7TH', 'EX6 7TJ', 'EX6 7TL', 'EX6 7TN', 'EX6 7UT', 'EX6 8JS', 'EX7 9AE', 'EX7 9BJ', 'EX7 9PY', 'EX8 5ER', 'EX8 5EY', 'EX8 5EZ', 'EX8 5HH', 'EX8 5HQ', 'EX9 7AZ', 'PL10 1BY', 'PL12 5BG', 'PL13 2EP', 'PL13 2ER', 'PL13 2ES', 'PL13 2EX', 'PL14 3LJ', 'PL14 4QX', 'PL14 6NG', 'PL15 7NW', 'PL15 8DH', 'PL15 8EX', 'PL15 8UW', 'PL15 9QN', 'PL15 9QP', 'PL16 0AH', 'PL16 0AJ', 'PL16 0AL', 'PL16 0EL', 'PL17 8LQ', 'PL17 8NJ', 'PL17 8NL', 'PL19 9PR', 'PL20 6SG', 'PL20 7SL', 'PL20 7SP', 'PL20 7SS', 'PL20 7TG', 'PL20 7TJ', 'PL20 7TZ', 'PL21 0LL', 'PL21 9NT', 'PL24 2AD', 'PL24 2AE', 'PL24 2AF', 'PL24 2AG', 'PL24 2AH', 'PL24 2AJ', 'PL24 2AN', 'PL24 2AQ', 'PL24 2AR', 'PL24 2AT', 'PL24 2AW', 'PL24 2AX', 'PL24 2AY', 'PL24 2BB', 'PL24 2BD', 'PL24 2DH', 'PL24 2DN', 'PL24 2HY', 'PL24 2JA', 'PL24 2JB', 'PL24 2JD', 'PL24 2JF', 'PL24 2JG', 'PL24 2JH', 'PL24 2JQ', 'PL24 2LU', 'PL24 2LX', 'PL24 2LZ', 'PL24 2ND', 'PL24 2NF', 'PL24 2NJ', 'PL24 2NS', 'PL24 2NU', 'PL24 2NX', 'PL24 2NY', 'PL24 2PA', 'PL24 2PB', 'PL24 2PD', 'PL24 2PE', 'PL24 2RF', 'PL24 2RL', 'PL24 2RN', 'PL24 2TW', 'PL25 5BU', 'PL26 6BT', 'PL26 6BU', 'PL26 6BX', 'PL26 6BZ', 'PL26 6DA', 'PL26 6DB', 'PL26 6DD', 'PL26 6DG', 'PL26 6RZ', 'PL26 7AA', 'PL26 7AD', 'PL26 7AE', 'PL26 7AR', 'PL26 7AS', 'PL26 7AX', 'PL26 7AY', 'PL26 7LL', 'PL3 6EE', 'PL30 5LF', 'PL30 5LL', 'PL32 9PB', 'PL32 9PD', 'PL32 9PG', 'PL32 9TL', 'PL5 4AQ', 'PL5 4LD', 'PL5 4NB', 'PL5 4NG', 'PL5 4NH', 'PL5 4NZ', 'PL7 1YB', 'PL8 2DY', 'PL8 2DZ', 'PL8 2EY', 'PL8 2LS', 'PL8 2LX', 'PL8 2NA', 'TQ10 9EF', 'TQ10 9ET', 'TQ10 9NB', 'TQ11 0AH', 'TQ11 0BA', 'TQ11 0BS', 'TQ11 0BT', 'TQ11 0BU', 'TQ11 0BY', 'TQ11 0BZ', 'TQ11 0EA', 'TQ11 0HE', 'TQ11 0NN', 'TQ11 0PF', 'TQ11 0QA', 'TQ12 3PF', 'TQ12 5UP', 'TQ12 6NL', 'TQ13 0NJ', 'TQ13 7DY', 'TQ13 7EJ', 'TQ13 7JG', 'TQ13 7QH', 'TQ13 7QL', 'TQ13 7QP', 'TQ13 7QW', 'TQ13 7RF', 'TQ13 7RN', 'TQ13 7TF', 'TQ13 7TG', 'TQ13 8JZ', 'TQ13 8LA', 'TQ13 8QY', 'TQ13 8SD', 'TQ13 9SS', 'TQ13 9SW', 'TQ13 9TB', 'TQ13 9TS', 'TQ14 8AB', 'TQ14 8AD', 'TQ14 8AE', 'TQ14 8AF', 'TQ14 8AH', 'TQ14 8AJ', 'TQ14 8AL', 'TQ14 8AS', 'TQ14 8AT', 'TQ14 8AU', 'TQ14 8AW', 'TQ14 8AX', 'TQ14 8AY', 'TQ14 8BG', 'TQ14 8BJ', 'TQ14 8BQ', 'TQ14 8BR', 'TQ14 8BT', 'TQ14 8BU', 'TQ14 8BX', 'TQ14 8BZ', 'TQ14 8DA', 'TQ14 8DB', 'TQ14 8DD', 'TQ14 8DE', 'TQ14 8DJ', 'TQ14 8DN', 'TQ14 8DS', 'TQ14 8EA', 'TQ14 8EB', 'TQ14 8EE', 'TQ14 8EF', 'TQ14 8EG', 'TQ14 8EN', 'TQ14 8EP', 'TQ14 8ES', 'TQ14 8FG', 'TQ14 8HH', 'TQ14 8HR', 'TQ14 8HT', 'TQ14 8HW', 'TQ14 8PE', 'TQ14 8SJ', 'TQ14 8SN', 'TQ14 8ST', 'TQ14 8SU', 'TQ14 8SW', 'TQ14 8SX', 'TQ14 8SY', 'TQ14 8SZ', 'TQ14 8TB', 'TQ7 2DN', 'TQ7 2QD', 'TQ7 2RE', 'TQ7 4DS', 'TQ9 6AH', 'TQ9 6NE', 'TQ9 6PD', 'TQ9 6RH', 'TQ9 6RL', 'TQ9 7AE', 'TQ9 7JT', 'TQ9 7LN', 'TQ9 7SR', 'TQ9 7SS', 'TQ9 7SU', 'TQ9 7SX', 'TQ9 7SZ', 'TQ9 7TA', 'TQ9 7TB', 'TQ9 7TH', 'TQ9 7TJ', 'TQ9 7TL', 'TQ9 7TP', 'TQ9 7TQ', 'TQ9 7TR', 'TQ9 7TS', 'TQ9 7TT', 'TQ9 7TU', 'TQ9 7TX', 'TQ9 7TY', 'TQ9 7UH', 'TR13 0PF', 'TR13 0RA', 'TR13 8HG', 'TR13 8HP', 'TR13 8HR', 'TR13 8HW', 'TR13 8HZ', 'TR17 0HJ', 'TR17 0HN', 'TR17 0HQ', 'TR18 3LL', 'TR19 7PG', 'TR19 7PH', 'TR19 7PN', 'TR19 7PQ', 'TR19 7PX', 'TR19 7TW', 'TR2 4AU', 'TR2 4EX', 'TR2 4HX', 'TR2 4PG', 'TR2 4PH', 'TR2 4PP', 'TR2 4PQ', 'TR2 4QB', 'TR2 4RU', 'TR2 4RX', 'TR2 4SB', 'TR20 9BL', 'TR3 6AA', 'TR3 7BT', 'TR3 7BU', 'TR3 7BX', 'TR3 7BY', 'TR3 7ND', 'TR4 8QZ', 'TR4 8RA', 'TR4 8RE', 'TR4 8RL', 'TR4 8RN', 'TR4 8SU', 'TR4 9PE', 'TR4 9QT', 'TR7 2HX', 'TR7 2RW', 'TR7 2TG', 'TR7 3BS', 'TR7 3PE', 'TR8 4BJ', 'TR8 4EP', 'TR8 4JW', 'TR8 4PU', 'TR8 4QE', 'TR8 5PS', 'TR9 6BD', 'TR9 6BY');
if(in_array($postcode, $banned))
{
$error = 'Your property is in a high risk area and must be referred to Zurich. Please call us on 08450 264420 to see if we can quote';
return false;
}
$prefixes = '/^(EX|PL|TQ|TR)/';
if(!preg_match($prefixes, $postcode))
{
$error = 'We can only quote for EX, PL, TQ & TR postcodes';
return false;
}
$error = NULL;
return true;
}
?>
peteyb
03-17-2006, 10:24 AM
could it be something to do with the way im calling the function:
// POSTCODE
if (!checkPostcode ($postcode, $error) )
{
$error = "<tr><td> </td><td colspan=\"3\" class=\"error\">$errorp</td></tr>";
$errors[] = '';
}
else
{
$postcode = escape_data($_POST['postcode']);
}
still only working with erroneous results
bokeh
03-17-2006, 11:28 AM
// POSTCODE
if (!checkPostcode ($postcode, $error) )
{
$error = "<tr><td> </td><td colspan=\"3\" class=\"error\">$errorp</td></tr>";
$errors[] = '';
}
else
{
$postcode = escape_data($_POST['postcode']);
}
First, use the last version of the function exactly as I posted it, not any other version. This if/else is causing the problem. There is no need to escape any data since we have already tested it is good with the regex in the function. Of course it is going to not be altered because you are using the POST data and not the data that we nicely reformated. Also you have a mismatch of variables. Also what is this: $errors[] = ''; Completely delete the above block of code and substitute it with the following:// POSTCODE
if (!checkPostcode ($postcode, $errorp) )
{
$error = "<tr><td> </td><td colspan=\"3\" class=\"error\">$errorp</td></tr>";
$errors[] = '';
}
peteyb
03-21-2006, 06:53 AM
it works, thank you for all the help.
again, im sorry for being a pain!!