"-<[ 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

Reply via email to