Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1488 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Nettoyer une chaine de caractère des articles qu'elle contient

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Nettoyer une chaine de caractère des articles qu'elle contient

n°794362
latruffe
Bdovore
Posté le 13-07-2004 à 10:38:43  profilanswer
 

Bonjour,
 
je cherche à faire une fonction me permettant de ne retenir que les éléments significatifs d'une chaine de caractère.
 
L'objectif est ensuite d'effectuer une recherche dans une base de donnée.  
 
Imaginons que je veuille rechercher un titre de film. L'utilisateur saisi "La vie est un long fleuve tranquille" dans le champ à rechercher. Je voudrais que ma fonction :
1. Elimine les mots "la" et "un" et éventuellement "est"
2. Ne retient que les autres mots et leur associe leur nombre de lettre
: Vie [3], long[4], fleuve [5], tranquille[10]
3. Les tri par ordre décroissant et ne retient que les deux premiers (fleuve et tranquille)
 
Les point 2 et 3 ne posent pas de gros problèmes. Par contre, quelle est la meilleur méthode pour le point 1.
 
En gros, je veux vérifier si un mot est présent dans une liste.
 
Est-ce qu'il faut mieux :  
1. faire un ensemble de Switch Case("la" ) Case ("le" )
2. travailler avec if(strpos())
3. tenter qq chose avec ereg (mais je vois pas comment faire)
4. existe-t-il une fonction toute faite ?
 
En vous remerciant par avance,


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
mood
Publicité
Posté le 13-07-2004 à 10:38:43  profilanswer
 

n°794370
Profil sup​primé
Posté le 13-07-2004 à 10:40:04  answer
 

hmm
 
peu etre explodé ta chaine avec le caractere " ", ce qui separera chaque mot, puis verificé que chaque mot du tableau ne soit pas dans la liste des mot interdit

n°794394
latruffe
Bdovore
Posté le 13-07-2004 à 10:48:28  profilanswer
 

chacal_one333 a écrit :

hmm
 
peu etre explodé ta chaine avec le caractere " ", ce qui separera chaque mot, puis verificé que chaque mot du tableau ne soit pas dans la liste des mot interdit


 
Tout à fait : c'est ce que je comptais faire. Le problème, c'est la comparaison avec la liste de mots interdit. Je ne pense pas qu'elle soit immense dans tous les cas (une 20aine de mots) mais c'est juste pour avoir un avis.
 
Quelle est la meilleure façon (=la plus rapide ?) pour déterminer si un mot fait partie d'une liste ?


Message édité par latruffe le 13-07-2004 à 10:48:47

---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
n°794397
Profil sup​primé
Posté le 13-07-2004 à 10:49:20  answer
 

ben surement un array
 
$interdit["le"]="le"
 
if (in_array($interdit, $phrase[x]))
 strreplace...

n°794407
latruffe
Bdovore
Posté le 13-07-2004 à 10:55:07  profilanswer
 

En fait, je crois que j'ai trouvé ma réponse (du moins où la trouver). J'utilise une fonction pour éviter qu'un utilisateur ne puisse utiliser un nom réserver comme username (genre admin, root, system) etc...
 
Je vais simplement regarder comment elle fonctionne...


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
n°794410
pascal_
Posté le 13-07-2004 à 10:57:19  profilanswer
 

Je ne sais pas si ça peut te convenir, mais si tu utilises mysql, as-tu déjà regardé du coté des fonctionnalités de la recherche full-text : http://dev.mysql.com/doc/mysql/fr/Fulltext_Search.html ?
 
1. ne prend pas en compte les petits mots
2. te retourne une valeur de pertinance pour chaque enregistrement
3. plus rapide que de tout faire à la main (et aussi gain de temps d'écriture de la fonction de recherche) car utilisant des index
 
J'espère que c'est pas trop HS  [:spamafote]

n°794429
latruffe
Bdovore
Posté le 13-07-2004 à 11:05:46  profilanswer
 

C'est interessant : je vais jeter un coup d'oeil à ça. :jap:
 
Sinon, pour ceux que ça interesse, il faut utiliser simplement ereg avec l'opérateur ou (|) :
Exemple : savoir si une chaine contient un article :
eregi("le|la|les|un|une|des",$chaine)
 
Merci pour d'avoir fait vivre ce topic :hello:
 
Note : je m'en vais comprendre la fonction recherche full-text :D


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Nettoyer une chaine de caractère des articles qu'elle contient

 

Sujets relatifs
Concatenation super simple de chaine de caractere[Résolu] [Regex] reconnaitre une chaîne non complète - java
entier -> chaine de caractères[C] Analyser une chaine d'un code barre ?
Pb php police de caractereDecoupage de chaîne[Resolu]
Expressions rationnelles et caractère "?"eliminer un caractère d'une chaine
Plus de sujets relatifs à : Nettoyer une chaine de caractère des articles qu'elle contient


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR