[PHP] Supprimer les mots de moins de x caractères

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


Bobez
WRInaute passionné
WRInaute passionné
 
Messages: 716
Inscription: Jeu Mai 20, 2004 13:03

[PHP] Supprimer les mots de moins de x caractères

Message le Ven Juin 25, 2004 10:05

Bonjour,

Existe-t-il un moyen simple de supprimer les mots de moins de x caractères se trouvant dans une chaîne, sans passer par une solution alternative (en utilisant une boucle for) ? Je me dis que ça doit être faisable avec les expressions régulières, mais je n'arrive pas à grand chose :wink:

Merci !

Oncle Tom
WRInaute passionné
WRInaute passionné
 
Messages: 812
Inscription: Lun Mar 31, 2003 11:16

Message le Ven Juin 25, 2004 10:19

le problème se situe dans les lettres accentuées etc. Elles sont composées comment tes chaines exactement ?


Bobez
WRInaute passionné
WRInaute passionné
 
Messages: 716
Inscription: Jeu Mai 20, 2004 13:03

Message le Ven Juin 25, 2004 10:43

En ce qui concerne les caractères accentuées, je m'en débarasse avant, ça ne pose pas de problème !
Imaginons une chaine de mots toute simple type : "L'arbre est beau".
Il faudrait supprimer de ça tous les mots de moins de 4 lettres, donc il resterait "l'arbre beau". Le must du must serait qu'il ne reste plus que "arbre beau", mais je sens que ça va pas être facile ! Au pire je peux faire un str_replace() après pour virer ce genre de choses.


pipologue
WRInaute passionné
WRInaute passionné
 
Messages: 592
Inscription: Jeu Mai 27, 2004 22:24

Message le Ven Juin 25, 2004 12:03

$var = eregi_replace(' [a-z]{1,2} ', ' ', $var);


George Abitbol
WRInaute accro
WRInaute accro
 
Messages: 1923
Inscription: Ven Juin 06, 2003 7:57

Message le Ven Juin 25, 2004 12:36

eregi = caca ;)

A part ça, ça va poser problème pour les mots qui sont en début ou fin de phrase. Donc je pense qu'il va falloit jouer avec \b et \w. Je regarde de mon côté si je trouve quelque chose d'efficace.

Fred


Bobez
WRInaute passionné
WRInaute passionné
 
Messages: 716
Inscription: Jeu Mai 20, 2004 13:03

Message le Ven Juin 25, 2004 13:53

pipologue a écrit:$var = eregi_replace(' [a-z]{1,2} ', ' ', $var);

Merci, mais cela me renvoie ma chaîne telle quelle sans changement 8O

La quête continue :)


berberber
WRInaute passionné
WRInaute passionné
 
Messages: 647
Inscription: Lun Mai 26, 2003 8:49

Message le Ven Juin 25, 2004 13:54

si tu veux, j 'ai le code pour un tableau....
apres suffit de faire esplode/implode pour convertir en texte


Bobez
WRInaute passionné
WRInaute passionné
 
Messages: 716
Inscription: Jeu Mai 20, 2004 13:03

Message le Ven Juin 25, 2004 14:06

Ben je veux bien, si c'est un truc simple ! Car si le code est long, avec une boucle for() et tout, c'est pas la peine, j'avais trouvé comment faire, je cherche vraiment un truc simple ! :)


berberber
WRInaute passionné
WRInaute passionné
 
Messages: 647
Inscription: Lun Mai 26, 2003 8:49

Message le Ven Juin 25, 2004 14:27

4 lignes avec un foreach, si tu le veux je te l envoie en MP


Bobez
WRInaute passionné
WRInaute passionné
 
Messages: 716
Inscription: Jeu Mai 20, 2004 13:03

Message le Ven Juin 25, 2004 15:09

Oui, je le veux bien ! mais pourquoi ne pas le mettre directement ici ?


berberber
WRInaute passionné
WRInaute passionné
 
Messages: 647
Inscription: Lun Mai 26, 2003 8:49

Message le Ven Juin 25, 2004 15:18

envoye, tiens moi au courant en cas de difficultes

Bernhard


Bobez
WRInaute passionné
WRInaute passionné
 
Messages: 716
Inscription: Jeu Mai 20, 2004 13:03

Message le Ven Juin 25, 2004 15:35

Ça fonctionne, et ça n'est pas très lourd en code ! J'ai le droit de mettre ici la version finale ?


pipologue
WRInaute passionné
WRInaute passionné
 
Messages: 592
Inscription: Jeu Mai 27, 2004 22:24

Message le Ven Juin 25, 2004 16:28

Le eregi vire les mots de 1 ou 2 caractères...


Bobez
WRInaute passionné
WRInaute passionné
 
Messages: 716
Inscription: Jeu Mai 20, 2004 13:03

Message le Ven Juin 25, 2004 16:35

Ah oui effectivement 8O Mais je n'arrive pas à l'adapter pour virer les mots de moins de 4 caractères...je suis vraiment une quiche en regex :P


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3577
Inscription: Mar Fév 10, 2004 16:40

Message le Sam Juin 26, 2004 22:39

Je te conseille ( pour l'avoir fait pour mon site http://www.retronimo.com ) d'utiliser les expressions régulières comme mentionné plus haut.

Ton code pourra ressembler à
$mots = eregi_replace ($patern, " ", $mots);
où $patern est la variable contenant la formule de l'expression régulière, du type
$patern = "[^a-z |^0-9|^é|^è|^ê|^à|^ô|^ù|^ç]";
Dans ton cas, le $partern ne doit pas être trop difficile à écrire.

Voir un tutorial pour la construire : http://www.phpfrance.com/tutorials/index.php?id=22 (pour ma part, je découvre seulement les expressions régulières, c'est déroutant au début mais ça peut s'avérer très utile).

[PHP] Supprimer les mots de moins de x caractères

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités