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