Если у меня есть название месяца на определенном языке (скажем, албанский), как мне получить соответствующий ему номер (в PHP)? Помимо очевидного метода создания массива с месячными именами этого языка (я боюсь, что это очень уязвимо для орфографических ошибок), я полагаю, что вы можете использовать setlocale, но я не могу понять, что делать дальше.Получить номер месяца от имени с другого языка
ответ
Может быть, я ошибаюсь, но, насколько я знаю, вы можете использовать локали для генерации названия месяцев, но не являются встроенные функции даты, которые способны анализировать не английские имена.
Это должно быть довольно легко создать список имен для сравнения:
<?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
.
Посмотрите на пакет i18n. Он предоставляет классы и функции для интернационализации в php.
http://php-flp.sourceforge.net/getting_started_english.htm#dates
Если пользователь вводит имя месяца, вы будете уязвимы, что бы вы ни делали. – Benjol