Extraire les chiffres puis les lettres d'une reférence

keyser94 Messages postés 8 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 6 novembre 2008 - 4 juil. 2005 à 15:38
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 5 juil. 2005 à 11:42
Bonjour,

Je cherche la fonction si elle existe
pour extraire une première partie d'une variable en lettre
et ensuite la partie chiffre
Je précise que la longueur différe d'une référence à une autre
exemple de ce que je souhaiterairef(1) mpf142> lettre = mpf et chiffre = 142ref(2) dj12> lettre = dj et chiffre = 12
je ne peux donc pas utiliser la fonction substr

Aidez moi svp
Keyser

5 réponses

mageonyme Messages postés 121 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 1 décembre 2009
4 juil. 2005 à 16:08
si on fait une variable +1-1 et que elle est égal c'est un chiffre sinon c'est une lettre donc pour chaque caractère on fait le tour :

function lettre ($refe) {
$nbcar=strlen($refe);
for($i=0;$i<$nbcar;$i++) {
$car[$i]=substr($refe,$i,1);
$cara[$i]=$car[$i]+1-1;
if(!$car[$i]==$cara[$i]) {
$res=$res.$car[$i];
}
}
return $res;
}

et pour les chiffres :
function chiffre ($refe) {
$nbcar=strlen($refe);
for($i=0;$i<$nbcar;$i++) {
$car[$i]=substr($refe,$i,1);
$cara[$i]=$car[$i]+1-1;
if($car[$i]==$cara[$i]) {
$res=$res.$car[$i];
}
}
return $res;
}

ya moyen de simplifier...

et pour l'appeler avec les variable suivantes
$ref[1]=mpf142;
$ref[2]=dj12;

par exemple :
echo lettre ($ref[1]);
ou :
echo chiffre ($ref[2]);

ça devrait marcher...
0
mageonyme Messages postés 121 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 1 décembre 2009
4 juil. 2005 à 16:10
dans ce cas
echo lettre(dhf32j);
affichera : dhfj
donc à modifier si tu ne veux que les chiffres devant les lettres...
0
keyser94 Messages postés 8 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 6 novembre 2008
4 juil. 2005 à 16:50
Je te remercie pour le code mais la fonction chiffre ne semble pas fonctionner
car pour les deux exemples, elle me renvoi la valeur complete
0
mageonyme Messages postés 121 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 1 décembre 2009
5 juil. 2005 à 09:59
<?
function lettre ($refe) {
$nbcar=strlen($refe);
for($i=0;$i<$nbcar;$i++) {
$car[$i]=substr($refe,$i,1);
$cara[$i]=$car[$i]+1-1;
if(!$car[$i]==$cara[$i]) {
$res=$res.$car[$i];
}
}
return $res;
}
function chiffre ($refe) {
$nbcar=strlen($refe);
for($i=0;$i<$nbcar;$i++) {
$car[$i]=substr($refe,$i,1);
$cara[$i]=$car[$i]+1-1;
if(!$car[$i]==$cara[$i]) {
} else {
$res=$res.$car[$i];
}
}
return $res;
}
echo 'lettre de mpf142 : '.lettre(mpf142).'
';;
echo 'chiffre de mpf142 : '.chiffre(mpf142);
?>
0

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

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 juil. 2005 à 11:42
Hello,



preg_match () devrait le faire beaucoup plus simplement.



avec une expression du genre [1-9]+ et une classe pour les lettres
aussi (ca fait lgtmps que je n'ai pas touche aux expressions
regulieres).
0
Rejoignez-nous