Récupérer une fois les deux premiers caractères d'une liste de mots


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Récupérer une fois les deux premiers caractères d'une liste de mots

Message le Mar Juin 30, 2009 21:38

Bonjour,


J'ai du mal à voir comment faire la chose qui suit...
Voilà : J'ai une liste de mots classés par ordre alphabétique, par exemple :

- Banane
- Bateau
- Bazzard
- Blanc
- Bleu
- Bouffon
- Boulet

Je souhaite récupérer une seule fois les deux premières lettres de chacun de ces mots.

Ce qui donne ici :
- Ba
- Bl
- Bo

Ca c'est la première partie.

La deuxième partie, c'est d'ajouter une ancre au premier mot de la liste présentant les deux caractères en question. Ainsi, en cliquant sur "Bo", on arrive directement à "Bouffon" (désolé pour l'exemple).

Voyez-vous comment faire ça, s'il vous plait ?


5_legs
WRInaute passionné
WRInaute passionné
 
Messages: 2072
Inscription: 30 Avr 2006

Re: Récupérer une fois les deux premiers caractères d'une liste de mots

Message le Mar Juin 30, 2009 21:46

meuhh euh je veux dire Bonsoir :-)

à tout hasard :

Code: Tout sélectionner
SELECT DISTINCT LEFT(tonchamp, 2) FROM tatable


:?:

Pour le second point avec un select ... LIKE'tonancre%' ça devrait le faire
Dernière édition par 5_legs le Mar Juin 30, 2009 21:49, édité 2 fois.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: Récupérer une fois les deux premiers caractères d'une liste de mots

Message le Mar Juin 30, 2009 21:47

AVec un tableau multi-dimensions tu devrais pouvoir faire ça :

1. Tu parcours chaque item de ta liste, et tu extrais à chaque fois les deux premiers caractères :

a. Soit ces deux premières caractères sont déjà utilisé comme clé dans ton tableau (tu testes ça avec http://fr2.php.net/manual/en/function.array-key-exists.php), donc tu affectes le mot que tu es en train de parcourir comme une valeur associée à cette clé

b. Soit ils ne sont pas connus et donc tu crée en même temps la clé et sa première valeur

Tu auras donc au final un tableau qui ressemble à ça :

Code: Tout sélectionner
$t_wordlist = array(
     'ba' => array ('banane','bateau','bazard'),
     'bl' => array (''blanc','bleu'),
     'bo' => array ('bouffon','boulet'),
)


Une fois que tu as ce tableau, il n'est pas très dur de le parcourir clé par clé, puis valeur après valeur, en faisant un echo pour chaque item, et en intégrant ce echo dans un <a></a> s l'item que tu es en train d'afficher est le premier connu pour la clé en cours.


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Re: Récupérer une fois les deux premiers caractères d'une liste de mots

Message le Mar Juin 30, 2009 22:36

Hum... En fait, le problème du tableau c'est que si la liste fait plus de 100 mots et c'est le cas, ça va faire 100 tests sur un tableau de 100 cases... Ca me semble beaucoup (ceci dit, je maîtrise mal les histoires de tableaux php).

Je viens d'avoir une autre idée :
Je récupère les deux premiers caractères du premier mot. Je les place en variable. Je teste les deux premiers caractère du second mots pour savoir s'ils sont similaire à la variable précédente. Si oui, je pose une ancre au mot précédent (comment remonter d'une case uh uh...)
Si non, je poursuis le script jusqu'à qu'un mot commence différemment des précédents, etc...

Il reste à récupérer une seule fois les deux premiers caractères de chaque mot pour faire les liens d'ancre, tout en haut du tableau. Pour ça, l'idée de druart est sans doute bonne, si toutefois ça requête est possible (là je dois aller au dodo, je teste demain matin).

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Récupérer une fois les deux premiers caractères d'une liste de mots

Message le Mer Juil 01, 2009 7:30

En perl:

Code: Tout sélectionner
my %hash;
$hash{substr($_,0,2)} = undef for @list;
my @result = keys %hash;


Ca doit donner quelque chose de similaire en php, genre:

Code: Tout sélectionner
foreach ($liste as $i)
{
  $hash[substr($i,0,2)] = 1;
}
$resultat = array_keys($hash)


A vérifier, je ne programme pas en php bien souvent.

Jacques.


5_legs
WRInaute passionné
WRInaute passionné
 
Messages: 2072
Inscription: 30 Avr 2006

Re: Récupérer une fois les deux premiers caractères d'une liste de mots

Message le Mer Juil 01, 2009 9:09

En fait il y a plusieurs solutions comme tu le vois.
Après il faut savoir ce que tu veux en faire exactement et choisir celle qui mangera le moins de ressources.

Tiens-nous au courant ;-)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Sets, Google Suggest

  • Générateur de mots-clés
    Cet outil vous permet de créer à partir de quelques mots-clés une liste d'expressions constituées des mots pris dans tous les ordres possibles. Il sert aux analyses de positionnement et achats de mots-clés.
  • Analyseur de densité
    Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité