Si j'ai un nom de mois dans une certaine langue (disons albanais), comment puis-je obtenir le numéro correspondant (en PHP)? Outre la méthode évidente de créer un tableau avec les noms des mois de cette langue (je crains que cela soit très vulnérable aux fautes d'orthographe), je suppose que vous pouvez utiliser setlocale mais je ne sais pas quoi faire ensuite.Obtenir le numéro du mois depuis le nom d'une autre langue
Répondre
Je peux me tromper mais, autant que je sache, vous pouvez utiliser les paramètres régionaux pour générer des noms de mois, mais il n'y a pas les fonctions de date BUILTIN qui sont capables d'analyser des noms non anglais.
Il devrait être assez facile de générer une liste de noms à comparer:
<?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));
}
}
Cependant, il est possible qu'il y sommes orthographes dans certaines langues de sorte que la fiabilité de cette méthode dépend en fait de votre exacte Besoins.
PHP a quelques Internationalization Functions qui pourrait être un meilleur pari. La méthode IntlDateFormatter::parse() semble faire exactement ce que vous demandez. Cependant, ses exigences incluent PHP 5 >= 5.3.0, PECL intl >= 1.0.0
.
Regardez le paquetage i18n. Il fournit des classes et des fonctions pour l'internationalisation en php.
http://php-flp.sourceforge.net/getting_started_english.htm#dates
Si l'utilisateur entre le nom du mois, vous serez vulnérable quoi que vous fassiez. – Benjol