"-<[ Rene Brehmer ]>-" <[EMAIL PROTECTED]> writes: > Firstname Middlename Last-name > > But I want the last namepart after the slash (-name) to also start > with a capital letter.
Just read the comments on ucwords() in the PHP manual, especially the one from Joerg Krause. He writes: | None of the examples above recognizes characters normally used as | delimiters. The following uses a regular expression, which is easy to | extend, to create an array with the parts of a text. Then it runs the | ucfirst-function for each part an implode the array: | | $text = "What?No delimiters,shit happens here.this solves all problems."; | preg_match_all("/(\w+[,. ?])+/U", $text, $words); | foreach($words[0] as $part) $uwords[] = ucfirst($part); | $text = implode("", $uwords); | echo $text; All you have to do is adding the "-" to the character class. > Isn't there some easy way to do this? If I have to go through a FOR > routine, it kinda ruins the idea of ucwords() in the first place, so > I'd rather avoid that if at all possible. I doubt the loop will be much slower than ucwords(). > Also, I'd like it to correctly be able to also correctly capitalize > Irish and Scottish names (like O'Connor, and MacDonald). The O'Connor is no problem, just add "'" to the character class. The MacDonald is a bit harder to solve. The above function will be of no help, and just matching for "Mac\w*" won't work since it would also match other names like "Macke". I think you will have to match these names against a list of possible words with mid word capitalization. [x] ulf -- If you can stay calm, while all around you is chaos... then you probably haven't completely understood the seriousness of the situation. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php