2010-12-14 9 views
2

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

+2

Si l'utilisateur entre le nom du mois, vous serez vulnérable quoi que vous fassiez. – Benjol

Répondre

1

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.

Questions connexes