If you want to capitalize the first letter of a multibyte string, you can use this function.
<?php
function capitalize($str, $encoding = null) {
$str = mb_strtoupper($str{0}, $encoding) . mb_substr($str, 1, null, $encoding);
return $str;
}
?>
mb_convert_case
(PHP 4 >= 4.3.0, PHP 5)
mb_convert_case — Perform case folding on a string
Beschreibung
$str
, int $mode = MB_CASE_UPPER
[, string $encoding = mb_internal_encoding()
] )
Performs case folding on a string, converted in the way specified by
mode.
Parameter-Liste
-
str -
The string being converted.
-
mode -
The mode of the conversion. It can be one of
MB_CASE_UPPER,MB_CASE_LOWER, orMB_CASE_TITLE. -
encoding -
Der
encodingParameter legt das Zeichenencoding fest. Wird er nicht übergeben so wird das interne Zeichenencoding genutzt.
Rückgabewerte
A case folded version of string converted in the
way specified by mode.
Unicode
By contrast to the standard case folding functions such as strtolower() and strtoupper(), case folding is performed on the basis of the Unicode character properties. Thus the behaviour of this function is not affected by locale settings and it can convert any characters that have 'alphabetic' property, such as A-umlaut (Ä).
For more information about the Unicode properties, please see » http://www.unicode.org/unicode/reports/tr21/.
Beispiele
Beispiel #1 mb_convert_case() example
<?php
$str = "mary had a Little lamb and she loved it so";
$str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
echo $str; // Prints MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
echo $str; // Prints Mary Had A Little Lamb And She Loved It So
?>
Beispiel #2 mb_convert_case() example with non-Latin UTF-8 text
<?php
$str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός";
$str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
echo $str; // Prints ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ, ΔΡΑΣΚΕΛΊΖΕΙ ΥΠΈΡ ΝΩΘΡΟΎ ΚΥΝΌΣ
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
echo $str; // Prints Τάχιστη Αλώπηξ Βαφήσ Ψημένη Γη, Δρασκελίζει Υπέρ Νωθρού Κυνόσ
?>
Siehe auch
- mb_strtolower() - Make a string lowercase
- mb_strtoupper() - Make a string uppercase
- strtolower() - Setzt einen String in Kleinbuchstaben um
- strtoupper() - Wandelt alle Zeichen eines Strings in Großbuchstaben um
- ucfirst() - Verwandelt das erste Zeichen eines Strings in einen Großbuchstaben
- ucwords() - Wandelt jeden ersten Buchstaben eines Wortes innerhalb eines Strings in einen Großbuchstaben
mb_convert_case
16-Aug-2006 12:30
07-Feb-2006 03:02
This function is a bit more flexible than using mb_convert_case with MB_CASE_TITLE, because it lets you add words whose case you don't want modified.
function title_case($string, $exceptions = array('to', 'a', 'the', 'of', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X')) {
$words = split(" ", $string);
$newwords = array();
foreach ($words as $word)
{
if (!array_key_exists($word, $exceptions)) {
$word = strtolower($word);
$word = ucfirst($word);
}
array_push($newwords, $word);
}
return ucfirst(join(" ", $newwords));
}
04-Feb-2006 05:59
This function will capitalize the first letter ( the same as using mb_convert_case with MB_CASE_TITLE flag, but when using a sentence, it'll only capitalize the first word )
<?php
function capitalize(&$input) {
$input = strtoupper( substr( $input , 0 , 1 ) ).strtolower( substr( $input , 1 ) );
return $input;
}
?>
Very short, uses substr, strtoupper, and strtoupper only
30-Apr-2005 10:36
For CZECH characters:
<?php
$text = mb_convert_case($text, MB_CASE_LOWER, "Windows-1251");
?>
The right encoding Windows-1250 is not valid (see the list mb_list_encodings), but Windows-1251 will do the same 100%. The function strtolower() ignores czech characters with diacritics.