PHP Australia Conference 2015

mb_strtoupper

(PHP 4 >= 4.3.0, PHP 5)

mb_strtoupper文字列を大文字にする

説明

string mb_strtoupper ( string $str [, string $encoding = mb_internal_encoding() ] )

str のすべてのアルファベットを大文字にして返します。

パラメータ

str

大文字に変換したい文字列。

encoding

encoding パラメータには文字エンコーディングを指定します。省略した場合は、 内部文字エンコーディングを使用します。

返り値

str のすべてのアルファベットを大文字にしたものを返します。

Unicode

Unicode 文字属性についての詳細は » http://www.unicode.org/unicode/reports/tr21/ を参照してください。

strtoupper()と違い、アルファベットであるかどうかは Unicode 文字属性をもとに決定されます。したがって、この関数の挙動は ロケールの設定に影響されず、すべてのアルファベット、 例えば A ウムラウト (ä) を変換することができます。

例1 mb_strtoupper() の例

<?php
$str 
"Mary Had A Little Lamb and She LOVED It So";
$str mb_strtoupper($str);
echo 
$str// 結果は MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
?>

例2 非ラテン UTF-8 テキストでの mb_strtoupper() の例

<?php
$str 
"Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός";
$str mb_strtoupper($str'UTF-8');
echo 
$str// 結果は ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ, ΔΡΑΣΚΕΛΊΖΕΙ ΥΠΈΡ ΝΩΘΡΟΎ ΚΥΝΌΣ
?>

参考

add a note add a note

User Contributed Notes 3 notes

up
1
tomasz at trejderowski dot pl
3 years ago
Please note, that in many cases, forcing UTF-8 encoding with second parameter is necessary. PHP documentation states that if this parameter is omitted, the internal character encoding value will be used. But in my case it turned out to be not true. Even though I have all my pages encoded in UTF-8 and my DB connection set to force UTF-8 encoding, comparison of user-input and DB-retrieved data, which is using mb_strtoupper, did not work until I forced encoding.
up
1
Stefan W
1 year ago
mb_strtoupper() will not convert the German "ß" character into its (relatively new) uppercase form ("ẞ").
mb_strtolower() will, however, convert the uppercase form into a lowercase "ß". (tested with PHP 5.5.0)
"SS" is still the most common uppercase presentation of "ß". If you want this, you'll have to do it manually:

<?php
mb_internal_encoding
("UTF-8");
echo
mb_strtoupper("Maß\n");  // "MAß"
echo mb_strtolower("MAẞ\n");  // "maß"
echo mb_strtoupper(str_replace("ß", "SS", "Maß\n"));  // "MASS"
?>
up
-1
rai at philscan dot com
5 years ago
for some reason, there are instances that special characters do show when you use this function, but when you revisit or refresh the page the special characters doesn't appear anymore, ie GRSARMERING is being displayed instead of GRÆSARMERING. You have to provide the second parameter which charset you are using to override the value. in my case it's iso-8859-1, so the function would now look like

mb_strtoupper($foo, 'iso-8859-1')
To Top