FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » CTYPE
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: CTYPE THREAD RESOLVED [message #182681 is a reply to message #182680] Mon, 26 August 2013 19:19 Go to previous messageGo to previous message
The Natural Philosoph is currently offline  The Natural Philosoph
Messages: 993
Registered: September 2010
Karma:
Senior Member
On 26/08/13 19:07, Fiver wrote:
> On 2013-08-25 21:35, Twayne wrote:
>> If anyone is interested, here's the code I ended up with. It still
>> needs to validate alphabetic & numeric array positions but that should
>> be reasonably simple to add by checking the array positions for alpha or
>> digit characters.
>>
>> Thanks for all the help!
>> -----------------------------------
>> $zip = check_input($zip);
>> $zip = strtoupper($zip);
>> // DETERMINE IF US POSTAL CODE
>> if(strlen($zip)===5) {
>> echo "U.S. postal code used "; }
>> IF (is_numeric($zip)) {
>> echo " and is 5 digits.";
>> }
>> IF(strlen($zip) === 7) {
>> echo "Zip appears to be Canadian . <br />";
>> }
>> // ================== NOW LOOK TO SEE IF IT'S ALPHA-NUMERIC
>>
>> // ================ LET'S ASSIGN IT TO AN ARRAY
>> echo ' <pre>';
>> print_r(str_split($zip,1));
>> echo '</pre>';
>>
>> // ================= check space is where it belongs
>> if($zip[3] === " ") {
>> echo "<br />Space in correct place<br />";
>> }
>>
>> $sUser = $zip;
>> $aValid = array(' ');
>> if(!ctype_alnum(str_replace($aValid, '', $sUser))) {
>> echo "Username has a problem";
>> echo 'Your Postal Code is NOT properly formatted.';
>> }
>> else {
>> echo "Postal code is properly formatted as ALPHA NUMERIC with ONE SPACE
>> as the 4th character";
>> }
> For the US zip codes:
>
> is_numeric() is not the correct function to use here. "+.1e1" and
> "0xCAB" are both numeric strings and would pass as US zip codes.
> Better solution:
>
> if (strlen($zip) == 5 && ctype_digit($zip)) {
> echo "looks like a US zip code\n";
> }
>
> Better yet: check for known bad zip codes as well
>
> ... && $zip != "00000" && $zip != "99999" && I don't know, some more
>
> For the Canadian zip codes:
>
> Your code has a comment "let's assign it to an array", and you also
> wrote that you still needed to validate the array positions, but you
> never do create an array (except for the unnecessary one in $aValid,
> which should probably be a string).
>
> Anyway, you're right that you still need to check the characters to the
> right and left of the space, or strings like "x " and " 3 "
> would be seen as valid zip codes. Here's one way to do it:
>
> if (strlen($zip) == 7
> && $zip[3] == " "
> && ctype_alpha($zip[0] . $zip[2] . $zip[5])
> && ctype_digit($zip[1] . $zip[4] . $zip[6]))
> {
> echo "looks like a Canadian zip code\n";
> }
>
> Note the two closing parens after $zip[6] ;)
>
>
> regards,
> 5er
>
>
> PS: No regexes were killed or injured in the production of this message.
>

Now key in SW1A 1AA as a postcode and see what it does with it.

there is a world beyond north America.

--
Ineptocracy

(in-ep-toc’-ra-cy) – a system of government where the least capable to lead are elected by the least capable of producing, and where the members of society least likely to sustain themselves or succeed, are rewarded with goods and services paid for by the confiscated wealth of a diminishing number of producers.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: korean character sets
Next Topic: Android app Developers requirements
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Thu Nov 28 17:29:12 GMT 2024

Total time taken to generate the page: 0.03640 seconds