Page 1 sur 1

Séparation de lettre et chiffre

Posté : 20 juin 2007, 16:04
par amdo
Bonjour,

J'ai un mot de ce format : B10 , Eq qui sont obtenus à partir d'une requête

JE voudrais un script pour séparer ces mots en mettant les lettres dans une variable et les chiffres dasn une variable.

Posté : 20 juin 2007, 16:11
par sadeq
Regarde du côté des expressions régulières
Hé oui un jour ou l'autre faudra s'y attaquer, bonne chance :lol:

Exemple simple, un split() qui coupe une chaine en morceaux, selon un critère de recherche basé sur une expression régulière:
<?php
//*************************
// CHIFFRES & LETTRES
//*************************
//

//Texte d'origine
$texte = "A1BC23D4";

//Les chiffres
$chiffres = split("[a-zA-Z]", $texte);

//Les lettres
$lettres = split("[0-9]", $texte);

//Affichage
echo "<p>Dans le texte: $texte";
echo "<p>Les chiffres sont: ".implode("",$chiffres);
echo "<p>Les lettres sont: ".implode("",$lettres);
?>
Dans ce code split() découpe le texte en plusieurs parties en se reposant sur l'expression régulière définie ([0-9] ou [a-zA-Z]) constituant des points de découpage.
Quand il s'agissait de récupèrer les chiffres, on a découpé le texte selon les positions des lettres [a-zA-Z] et vis-versa, les positions des chiffres [0-9] ont servi comme points de coupe pour extraire les lettres.

Split() élimine donc le caractère défini comme séparateur. On en a profité dans cet exemple.

Le même exemple sous forme de fonction :
//Fonction d'extraction des chiffres et des lettres
function chiffres_et_lettres($texte){
	return array("chiffres"=>implode("",split("[a-zA-Z]", $texte)), "lettres"=>implode("",split("[0-9]", $texte)));
}

//Test de la fonction
print_r(  chiffres_et_lettres("A1BC23D4")  );
On a vu maintenant que c'est possible, il faut alors passer à la vitesse supérieure, faire des recherches et utiliser d'autre fonctions que split() qui gèrent mieux les expressions régulières. Car ceci dit, cet exemple se limite au caractères A à z