Hi,

I made a little function that will allow allow "alphabetical character with 
apostrophe then more alphabetical characters then hyphen then more 
alphabetical characters (D'Agostino-Wong)". The downside is that it will 
automatically cap "von Hollander-Smith"

function ucase_words($txt){

        if(ereg("['-]", $txt)){

                $txt = strtolower($txt);

                $boom = explode("'", $txt);
                foreach($boom as $key => $txt){
                        $boom[$key] = ucfirst($txt);
                }
                $booms = implode("'", $boom);


                $boomer = explode("-", $booms);

                foreach($boomer as $key => $booms){
                        $boomer[$key] = ucfirst($booms);
                }
                $boomers = implode("-", $boomer);

                return($boomers);
        }
        else {

                $txt = strtolower($txt);
                $txt = ucwords($txt);
                return($txt);
        }
}


I suppose you could add an if-then test for the odd lowercase. It seems to 
work well and covers most of the scenarios you listed. [Btw, it was my 
'very-first-function' so go easy on me! :>]

Just my $0.01 worth,
Andre



On Thursday 27 March 2003 06:49 pm, [EMAIL PROTECTED] wrote:
> Thank you.  Strip_slashes was the key.  The following Regular
> Expression:
>
> (preg_match("/^[[:alpha:]]{2,}[-]?[[:alpha:]]+$|^[[:alpha:]]{2,}[[:space:]]
>?[[:alpha:]]+$|^[[:alpha:]]{1,1}[']?[[:alpha:]]+$/", $Last_Name)
>
> allows only alphabetical characters (e.g., Smith), alphabetical characters
> with whitespace then more alphabetical characters (e.g., Au Yong),
> alphabetical character with apostrophe then more alphabetical characters
> (e.g., O'Neal), or alphabetical characters with hyphen then more
> alphabetical characters (e.g., Zeta-Jones).  It does not, however, allow
> alphabetical character with apostrophe then more alphabetical characters
> then hyphen then more alphabetical characters (D'Agostino-Wong),
> alphabetical characters with whitespace then more alphabetical characters
> then hyphen then more alphabetical characters (e.g., von Hollander-Smith),
> or alphabetical characters with whitespace then more alphabetical
> characters then hyphen then alphabetical character then apostrophe then
> more alphabetical characters (e.g, Van Horn-O'Reilly) or anything else
> anyone may type in or not type in.
>
> On Thu, 27 Mar 2003, Jennifer Goodie wrote:
> > This is what I use
> > $LastName = stripslashes($_POST['LastName']);
> > preg_match("/^\w+[\s\-\'\.\w]*$/i", $LastName)
> >
> > This is less strict than yours as I'm allowing whitespace, periods,
> > underscores, hyphens, apostrophes, and numbers because I don't so much
> > care if someone tacks on " Jr." or something like that to the end of
> > their name.
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, March 27, 2003 3:05 PM
> > To: Jennifer Goodie
> > Cc: John W. Holmes; 'John Nichel'; [EMAIL PROTECTED]
> > Subject: RE: [PHP] Form Validation: Surnames with Apostrophe
> >
> >
> >
> > When I do that:
> >
> > (preg_match("/^[a-z](\\')?[a-z-]+$/i",$_POST[Last_Name])
> >
> > it won't allow O'Reilly
> > and seems to not allow anything at all
> >
> > On Thu, 27 Mar 2003, Jennifer Goodie wrote:
> > > That is because it is not saying that is all that can be in the string.
> >
> > The
> >
> > > 'Re' matches that pattern.  Put a ^ at the beginning to signify it must
> > > start with the pattern and a $ at the end to signify it must end there.
> > >
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> > > Sent: Thursday, March 27, 2003 1:19 PM
> > > To: John W. Holmes
> > > Cc: 'John Nichel'; [EMAIL PROTECTED]
> > > Subject: RE: [PHP] Form Validation: Surnames with Apostrophe
> > >
> > >
> > >
> > > I just tried your regexp:
> > >
> > > (preg_match("/[a-z](\\')?[a-z-]+/i",$_POST[Last_Name])
> > >
> > > and it allows the following:
> > >
> > > O' [EMAIL PROTECTED]
> > >
> > > It seems to allow any number of characters and spaces between the O'
> > > and Re
> > >
> > > On Wed, 12 Mar 2003, John W. Holmes wrote:
> > > > > > preg_match ( "/[A-Za-z-']+/", $_POST['Last_Name'] );
> > > > > >
> > > > > > [EMAIL PROTECTED] wrote:
> > > > > > > I have been trying to validate a form field Last_Name and have
> > > >
> > > > been
> > > >
> > > > > unable
> > > > >
> > > > > > > to find a regexp to account for the apostrophe (e.g.,
> > > > > > > O'Reilly).
> > > >
> > > > The
> > > >
> > > > > > > following statement:
> > > > > > >
> > > > > > > preg_match('/^[[:alpha:]]+[-]?[[:alpha:]]+$/',
> > > > > > > $_POST[Last_Name])
> > > > > > >
> > > > > > > accepts hyphenated surnames and I have tried escaping the
> > > >
> > > > apostrophe:
> > > > > > > [\\'] and [\\\'] to no avail. Any idea what I am doing wrong?
> > > > >
> > > > > that could work but the user may now submit one or more apostrophes
> > > > > as the Last Name.
> > > >
> > > > Watch out for magic_quotes. If "O'Reilly" is submitted, unless you
> > > > stripslash() it, you're validating against "O\'Relly".
> > > >
> > > > preg_match("/[a-z](\\')?[a-z-]+/i",$_POST['Last_Name'])
> > > >
> > > > ---John W. Holmes...
> > > >
> > > > PHP Architect - A monthly magazine for PHP Professionals. Get your
> > > > copy today. http://www.phparch.com/
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to