Den ersten Buchstaben von jedem Wort groß/klein schreiben (Thema: PHP Beispiele)

Wie in einem String der erste Buchstabe jeweils jedes einzelnen Wortes in Großschreibung oder Kleinschreibung geändert werden kann

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"

Kommentare (0)

Von neu nach alt