par
sadeq » 20 juin 2007, 16:11
Regarde du côté des expressions régulières
Hé oui un jour ou l'autre faudra s'y attaquer, bonne chance
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