Conversion

666theNumberoftheBeast - 18 déc. 2012 à 23:41
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 20 déc. 2012 à 23:55
Salut, je cherche à savoir quelles fonctions de PHP y faut que j' utilise pour :

[list]
[*] convertir lettres ... Vers chiffres
[*] et inversement
/list

            
                

8 réponses

sylvain64520 Messages postés 130 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 7 juin 2013
19 déc. 2012 à 09:46
Et tu fais comment pour convertir une lettre en un chiffres ?
Tu prends son numéro dans l'ordre alphabétique ?

A->1
B->2
C->3
...
Z->26 ?

Si c'est ça, tu peux te créer une fonction avec un jolie switch(){case} qui retournera le numéro.

Pareil pour la conversion inverse.
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
19 déc. 2012 à 12:47
Salut,

man ord()
man chr()

Et si ça ne répond pas à ta question, alors c'est que cette dernière était mal posée.
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
20 déc. 2012 à 01:44
Salut,
Sinon il est possible de créer une méthode.

$a_chiffres_vers_lettres = array(
    'un' => 1,
    'deux' => 2,
    'trois' => 3
);
echo strtr('un', $a_chiffres_vers_lettres);

$a_lettres_vers_chiffres = array(
    1 => 'un',
    2 => 'deux',
    3 => 'trois'
);
echo strtr(1, $a_lettres_vers_chiffres);
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
20 déc. 2012 à 12:17
@stay : Je serais curieux de voir comment tu gères les nombres plus grands, et en particulier ceux du genre "quatre vingt dix". Et puis les différentes manière d'écrire ces nombres, genre "quatre vingt dix" et "quatre-vingt-dix". Ho, et je te recommande également de faire attention à la casse, parce que là rien que "Un" ne passe pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
20 déc. 2012 à 12:38
Salut,

J'ai pas dit que c'était la solution.
C'est mieux qu'un swith().

Et comme, il n'y a pas de solution.
Il a pas trop de choix.

En restant positif dans ma demande, tu proposes quoi TychoBrahe ?
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
20 déc. 2012 à 13:15
C'est vrai que c'est mieux qu'un switch, je suis entièrement d'accord avec toi. Cependant, comme tu l'as toi même remarqué, ce n'est pas une solution.

Et donc, pour en revenir sur ce que je propose, tu auras certainement remarqué mon post plus haut où je propose une véritable solution dans le cas où al question est comprise d'une autre manière. Alors pour proposer une véritable solution à la manière dotn toi tu as compris la question, je te propose de regarder du côté de Numbers_Words qui propose de convertir des entiers en chaîne. À noter que cette extension supporte plusieurs langues.

<?php

require 'Numbers/Words/lang.fr.php';

$nb = new Numbers_Words();
$tuples = [0, 1, 42, 92, 123, 487, 1024];

foreach ($tuples as $t) {
  var_dump($nb->toWords($t, 'fr'));
}

-> php nb.php
string(4) "zéro"
string(2) "un"
string(13) "quarante-deux"
string(18) "quatre-vingt-douze"
string(16) "cent vingt-trois"
string(29) "quatre cent quatre-vingt-sept"
string(18) "mille vingt-quatre"


Voilà, ça répond parfaitement à un aspect de la question telle que tu l'as compris et, en plus, évite de réinventer la roue carrée. Il ne manque plus que l'opération inverse : passer d'une chaîne de caractère représentant un mot dans une langue donnée en entier. Je n'ai pas cherché mais ça doit bien exister, au pire ce n'est si dur que ça à coder, surtout en PHP.
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
20 déc. 2012 à 13:58
Salut, tu as du remarquer que je dis toujours "salut" au début d'une conversation.
Je ne suis pas un guerrier comme la plupart des gens (initier sur ce forum) qui montre leur supériorité avec des propos de ce genre *évite de réinventer...

Je n'ai pas toujours le temps par moi même non plus de trouver des nouvelles solutions.
C'est pour cela que je viens de temps à autres sur des forums comme celui-ci.
Donc, merci pour ta solution qui me sera un jour très utile ;).

Stay
Directeur du Développement Web
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
20 déc. 2012 à 23:55
Je suis très flatté que tu me considère comme supérieur ! (lulz inside hein) Soit dit en passant, je te fais remarquer que réinventer la roue carrée est une expression courante qui n'a rien d'insultant ou de méprisant. Et oui, j'aime bien appeler un chat un chat, désolé si ça ne plait pas.

Lors d'une conversation je dis salut lorsque j'arrive, inutile de se répéter sans cesse et de saluer 5 fois dans la journée la même personne. J'avoue que je n'avais pas vu que tu n'avais pas rejoint cette discuss avant moi et donc que je ne t'ai pas salué, je m'en excuse et te le dis avec un peu de retard : salut !

Sur ce, je ne vois pas l'utilité de continuer à dériver du sujet, alors bonne continuation !
0
Rejoignez-nous