2010-12-14 18 views
2

特定の言語で月の名前がある場合(それはアルバニア語です)、それに対応する番号を取得するにはどうしたらいいですか?その言語の月名の配列を作る明白な方法に加えて(私はスペルミスに非常に脆弱だと恐れています)、私はあなたがsetlocaleを使うことができると推測しますが、次に何をするのか分かりません。他の言語の名前から月の番号を取得

+2

ユーザーが月の名前を入力している場合は、あなたが何をしていても脆弱です。 – Benjol

答えて

1

私が間違っている可能性がありますが、私の知る限り、あなたは月名を生成するためのロケールを使用することができますが、英語以外の名前を解析することができます組み込み日付関数はありません。

と比較する名前のリストを生成するために、かなり簡単なはずです。しかし、それはこの方法の信頼性は、実際にあなたの正確なによって異なりますので、いくつかの言語での代替スペルがそこにいるということが可能です

<?php 

$langs = array(
    // Windows only locale names 
    'Albanian', 
    'French', 
    'German', 
    'Spanish', 
); 
$months = array(); 

foreach($langs as $lang){ 
    setlocale(LC_TIME, $lang); 
    foreach(range(1, 12) as $i){ 
     $months[$lang][$i] = strftime('%B', mktime(0, 0, 0, $i)); 
    } 
} 

ニーズ。

PHPにはInternationalization Functionsの方が良いかもしれません。 IntlDateFormatter::parse()メソッドは、あなたが求めているものとまったく同じように見えます。ただし、その要件にはPHP 5 >= 5.3.0, PECL intl >= 1.0.0が含まれます。

関連する問題