関数・クラス解説

setlocale

version:PHP 4, PHP 5, PHP 7 (公式)

ロケール情報の設定を行う

フォーマット

string | false : setlocale ( int $category , string $locale , string ...$locales )
string | false : setlocale ( int $category , array $locale )

パラメータ

int $category (必須)
setlocale でのロケール情報の変更に基づいて、作動を変更させる関数を指定します。以下の定数で指定できます。無効なカテゴリを設定した場合は警告メッセージが発生します。

  • LC_ALL 以下のものすべて
  • LC_COLLATE 文字列の比較用strcoll()参照
  • LC_CTYPE 文字の分類と変換。たとえばstrtoupper()
  • LC_MONETARY localeconv()
  • LC_NUMERIC 数字の区切り文字用(localeconv()も参照ください)
  • LC_TIME 日時strftime()でフォーマットに使用
  • LC_MESSAGES システムの応答用(PHP が libintl とともにコンパイルされている場合のみ使用可能)


string $locale (必須)
ロケールを指定します。NULL や空文字列 ("")の場合、ロケール名はcategoryと同じ名前の環境変数の値、または環境変数 "LANG" が参照されます。"0" を指定した場合は、ロケール設定は行われず、単に現在の設定が返されます。

string ...$locales
(オプションの文字列あるいは配列で、ロケール設定が成功するまで続けます)
注意: Windows では、setlocale(LC_ALL, '') を使用するとシステムの 地域と言語の設定の値を使用します (コントロールパネルで確認できます)。


返値
現在の新しいロケールを返します。指定されたロケールが存在しない場合、カテゴリ名が無効などの場合は FALSE が返ります。カテゴリやロケール名は、» RFC 1766 や » ISO 639 にあります。ロケールの命名方式は、システムによって異なります。
注意: setlocale() の戻り値は、PHP が実行されているシステムに依存します。システムの setlocale 関数が返す値を返すためです。

解説

ロケール情報を設定します。またこの設定によって影響を与える関数を指定することもできます。

記述サンプル

//公式より
// ロケールをオランダ語に設定
setlocale(LC_ALL, 'nl_NL');

// 出力: vrijdag 22 december 1978
echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978));

/* ----------------------------- */

// ドイツに対して利用可能な異なるロケール名を使用する
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
echo "Preferred locale for german on this system is '$loc_de'";

/* ----------------------------- */

//Windows での setlocale()
// ロケールをオランダ語に設定
setlocale(LC_ALL, 'nld_nld');

// 出力: vrijdag 22 december 1978
echo strftime("%A %d %B %Y", mktime(0, 0, 0, 12, 22, 1978));

// ドイツに対して利用可能な異なるロケール名を使用する
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
echo "Preferred locale for german on this system is '$loc_de'";

参考リンク

strftime ロケールの設定に基づいてローカルな日付・時間をフォーマットする
localeconv 現在のロケール(設定された地域)の数値フォーマットに関する情報を得る
strcoll ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
strtoupper 文字列を大文字にする

タグ

ロケール 設定 String 文字列


公式リファレンス

書式

setlocale ( int $category , string $locale , string ...$locales ) : string

setlocale ( int $category , array $locale ) : string

説明

ロケール情報を設定します。

警告

ロケール情報は、スレッド毎ではなくプロセス毎に維持されます。 もし PHP を マルチスレッドサーバAPI 上で動作させている場合、 スクリプトを実行している間にロケールの設定が突然変わるのを 経験するかも知れませんが、スクリプト自身は決して setlocale() 自身をコールしていません。 これは同時に同一プロセスの異なるスレッドで実行されている他のスクリプトが setlocale() を使用してプロセスワイドなロケールを変更する事により発生します。 Windows では、PHP 5.6.20 および 7.0.5 以降、 ロケール情報はスレッド単位で維持されるようになっています。

パラメータ

category
categoryは、名前付きの定数(または文字列)であり、 ロケール設定により影響を受ける関数のカテゴリを指定します。
  • LC_ALL 以下のものすべて
  • LC_COLLATE 文字列の比較用。strcoll() 参照
  • LC_CTYPE 文字の分類と変換。たとえば strtoupper()
  • LC_MONETARY localeconv() 用
  • LC_NUMERIC 数字の区切り文字用(localeconv() も参照ください)
  • LC_TIME 日時。strftime()でフォーマットに使用
  • LC_MESSAGES システムの応答用(PHP が libintl とともにコンパイルされている場合のみ使用可能)
locale
localeが NULL もしくは空の文字列 "" の場合、ロケール名は上記のカテゴリと同じ名前の環境変数の値、 または環境変数 "LANG" からセットされます。 locale が "0" の場合、 ロケール設定は適用されず、単に現在の設定が返されます。 locale が配列もしくは追加のパラメータが続く場合、 それぞれの配列要素もしくはパラメータは成功するまで新規ロケールとしてセットされます。 これは、ロケールが異なるシステムで異なる名前を持っている、 もしくはロケールが利用できない場合のフォールバックを提供するといった場合に有用です。
locales
(オプションの文字列あるいは配列で、ロケール設定が成功するまで続けます)
注意: Windows では、setlocale(LC_ALL, '') を使用するとシステムの 地域と言語の設定の値を使用します (コントロールパネルで確認できます)。

返値

現在の新しいロケールを返します。ロケール機能が未実装、 指定されたロケールが存在しない、カテゴリ名が無効などの場合は FALSE を返します。 また、カテゴリ名が無効の場合は警告メッセージが発生します。 カテゴリやロケール名は、 » RFC 1766 や » ISO 639 にあります。 ロケールの命名方式は、システムによって異なります。

注意: setlocale() の戻り値は、 PHP が実行されているシステムに依存します。 システムの setlocale 関数が返す値を返すためです。

注意

ヒント Windows ユーザーは Microsoft の MSDN の Web サイトに locale 文字列に関する有用な情報を見つけることができるでしょう。 サポートしている言語文字列は » 言語文字列のドキュメント、 そしてサポートしている国/地域文字列は » 国/地域文字列のドキュメント にあります。警告 ロケール情報は、スレッド毎ではなくプロセス毎に維持されます。 もし PHP を マルチスレッドサーバAPI 上で動作させている場合、 スクリプトを実行している間にロケールの設定が突然変わるのを 経験するかも知れませんが、スクリプト自身は決して setlocale() 自身をコールしていません。 これは同時に同一プロセスの異なるスレッドで実行されている他のスクリプトが setlocale() を使用してプロセスワイドなロケールを変更する事により発生します。 Windows では、PHP 5.6.20 および 7.0.5 以降、 ロケール情報はスレッド単位で維持されるようになっています。

サンプル

例1 setlocale() の例

/* ロケールをオランダ語に設定 */ setlocale(LC_ALL, 'nl_NL'); /* 出力: vrijdag 22 december 1978 */ echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978)); /* ドイツに対して利用可能な異なるロケール名を使用する */ $loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge'); echo "Preferred locale for german on this system is '$loc_de'";

例2 Windows での setlocale() の例

/* ロケールをオランダ語に設定 */ setlocale(LC_ALL, 'nld_nld'); /* 出力: vrijdag 22 december 1978 */ echo strftime("%A %d %B %Y", mktime(0, 0, 0, 12, 22, 1978)); /* ドイツに対して利用可能な異なるロケール名を使用する */ $loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu'); echo "Preferred locale for german on this system is '$loc_de'";

ワード検索


※入力キーワードが、関数名・説明文・タグに含まれるものを検索

関数名アルファベット別

A B C D E F G H I J
K L M N O P Q R S T
U V W X Y Z _

最終更新一覧

stristr
 大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

stripslashes
 バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

stripos
 大文字小文字を区別せずに文字列が最初に現れる位置を取得する

stripcslashes
 addcslashes() でクォートされた文字列をアンクォートする

strip_tags
 文字列から HTML と PHP のタグを除去して返却

strcspn
 指定した文字が最初に現れる位置を調べる

strcoll
 ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

strcmp
 2つの文字列を比較し同じか(あるいは大小)を判定する

strchr
 strstr() のエイリアス

strcasecmp
 2つの文字列を比較(大文字小文字を区別せず同じとみなす)

カテゴリー一覧

PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール