2010-12-14 3 views
2

Если у меня есть название месяца на определенном языке (скажем, албанский), как мне получить соответствующий ему номер (в PHP)? Помимо очевидного метода создания массива с месячными именами этого языка (я боюсь, что это очень уязвимо для орфографических ошибок), я полагаю, что вы можете использовать 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.

 Смежные вопросы

  • Нет связанных вопросов^_^