1. Jeden ersten Buchstaben groß schreiben
Um jeweils den ersten Buchstaben jedes einzelnen Wortes in einem String in Großschreibung umzuwandeln kann ucwords($string) verwendet werden.
PHP-Code
<?php $str = 'john c. smith (32)'; var_dump(ucwords($str)); ?>
Ausgabe
string(18) "John C. Smith (32)"
2. Jeden ersten Buchstaben klein schreiben
Eine zu ucwords() äquivalente Funktion, die jeden ersten Buchstaben automatisch klein schreibt, gibt es standardmäßig in PHP nicht.
Die nachfolgende Funktion kann als Ersatz dafür dienen. (Weiter unten findet sich auch eine Version, die für UTF-8 vorgesehen ist.)
PHP-Code
<?php function lcwords($str) { $arr = array_map(function($val) { return lcfirst($val); }, explode(' ', $str)); return implode(' ', $arr); } $str = 'John c. SMITH (32)'; var_dump(lcwords($str)); ?>
Ausgabe
string(18) "john c. sMITH (32)"
3. ucwords()/lcwords() und UTF-8
Ist der zu bearbeitende String in UTF-8 codiert, empfiehlt es sich, die für UTF-8 vorgesehenen Funktionen zu verwenden.
Es existieren zwar keine, die speziell die Funktionalität von ucwords() und lcwords() auf UTF-8 abbilden, sie lassen sich aber über mb_strtoupper($str)/mb_strtolower($str) (ein oder mehr Buchstaben in Groß-/Kleinschreibung umwandeln) und mb_substr($str, $start, $length) (einen Teilstring aus einem String extrahieren) nachbilden.
PHP-Code
<?php mb_internal_encoding('UTF-8'); function mb_ucwords($str) { $arr = explode(' ', $str); foreach ($arr as $key=>$val) { $arr[$key] = mb_strtoupper(mb_substr($val, 0, 1)) . mb_substr($val, 1); } return implode(' ', $arr); } function mb_lcwords($str) { $arr = explode(' ', $str); foreach ($arr as $key=>$val) { $arr[$key] = mb_strtolower(mb_substr($val, 0, 1)) . mb_substr($val, 1); } return implode(' ', $arr); } // Die Ersatzfunktion von weiter oben; nicht auf UTF-8 ausgelegt function lcwords($str) { $arr = array_map(function($val) { return lcfirst($val); }, explode(' ', $str)); return implode(' ', $arr); } $str = 'α β Γ Δ a b C D'; var_dump(ucwords($str)); var_dump(mb_ucwords($str)); var_dump(lcwords($str)); var_dump(mb_lcwords($str)); ?>
Ausgabe
string(19) "α β Γ Δ A B C D" string(19) "Α Β Γ Δ A B C D" string(19) "� � � � a b c d" string(19) "α β γ δ a b c d"