IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Conception] Syntaxe mots-clés référencement


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 229
    Par défaut [Conception] Syntaxe mots-clés référencement (levenshtein)
    Salut à tous,

    Je ne sais pas exactement comment intituler ce sujet ni s'il existe déjà donc je serai grès à un modo de le replacer à l'endroit le plus approprié. merci

    Je suis en stage (donc autant dire que même si la prog me plait assez, je ne suis pas pro) dans une boite qui fait du référencement. Je dois concevoir un programme qui va récupérer les stats misent en ligne par un prog de stats et les traiter et les formater pour en faire des rapports pour le suivi client.

    J'en suis à la gestion des mots-clés et je suis bloqué sur un problème qui est plus logique que programmation : comment gérer automatiquement les doublons qui ne sont pas considéré comme tel à cause de syntaxes différentes et de fautes de frappes :

    exemple : machine a coudre = machine à coudre
    machines à coudre = machine à coudre

    La syntaxe est différentes mais il s'agit du même mot-clé. Je sais que je vais devoir utiliser les expressions régulières, je les ai déjà utilisé pour des cas plus simple. Le problème est que je ne vois pas les règles à mettre en place.

    Merci si jamais vous arriver à me faire avancer un peu.

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    tu peux peut-être t'orienter vers des fonctions comme levenshtein car si tu veux gérer les fautes de frappes en REGEX ca risque d'être un peu chaud.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 229
    Par défaut
    Merci pour ton aide, je pense que tu m'as fait progresser vers la solution. Je ne connaissais pas cette fonction mais je pense qu'elle va m'être très utile.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 229
    Par défaut
    Re-bonjour,

    Désolé de remettre le couvert et de redemander de l'aide mais mon utilisation de la distance de levenshtein en php ne semble pas fonctionner. En effet, il semblerait que la fonction levenshtein de php ne gère que très mal les espaces, je trouve des distances à 3 et 4 chiffres pour des chaines de caractères ne contenant que quelques mots (5 max).

    J'ai donc toujours le même problème au niveau de la reconnaissance de doublons de mots-clés.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 229
    Par défaut
    Je me permet de vous relancer pour deux raisons :
    premièrement, je suis surpris que personne n'est de solutions à proposer,
    deuxièmement, sans être réellement urgent, c'est quand même assez important...

  6. #6
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    tu peux pas simplement supprimer les multi-espaces ?
    T'as un exemple de chaînes qui posent un problème ?
    Tu peux aussi utliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    similar_text($str1, $str2, $percent);
    echo $percent."<br>";
    pour avoir un pourcentage (je crois que l'algo de similar_text() est moins rapide mais tu dois pouvoir déduire un pourcentage du résultat de levenstein())
    Sinon tu peux aussi splitter tes chaînes, le souci des espaces ne me semblent pas un problème.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 229
    Par défaut
    Je ne sais pas exactement ce qui ne fonctionne pas même lorsque je supprime les espaces. Pour un des mots clés que je récupère sur l'outil de stats, un caractère apparait comme un espace mais il n'en est pas un puisque qu'il reste après leur suppression.

  8. #8
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Ca ressemble plutôt à un problème d'encodage, peut-être une tabulation ?
    Finalement splitter les chaînes + utiliser similar_text() est une mauvaise idée car l'algo se base sur la longueur des chaînes ex ; similar_text("a", "à") donne 0%.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 229
    Par défaut
    Il semblerait que se soit bien un problème d'encodage au niveau de la récupération du fichier html avec fopen();, dans le fichier de base, quand j'affiche la source, le caractère "&nbsp" apparait mais sur le code que je récupère, je me retrouve avec un espace qui ne correspond à rien.

    J'ai cherché dans la doc de php les fonctions d'encodage et de décodage mais rien ne fonctionne et certain fonction en sont même pas documentées.

    Là, je commence vraiment à manquer de pistes, je bloque.

  10. #10
    Membre émérite Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Par défaut
    bonjour,

    Pour ton problème de caractère remplace les sens les accents, ex : à => a je pense que c'est le plus simple, pour tes espaces fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('/\s/i', 'ta chaine');
    regarde si sa te retourne 1 ou non puis si ça te retourne 1 tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('/\s/i', '/%20/', 'ta chaine')
    et je pense que sa va résoudre certain de tes problèmes

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 229
    Par défaut
    Tu peux m'expliquer en détail comment fonctionne ce que tu m'as donné, parce que si j'ai bien compris : la première instruction me renvois 1 donc il y a bien ce que tu vérifie, mais la deuxième me renvois '2256/%20/' donc je ne comprends pas tout.

  12. #12
    Membre émérite Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Par défaut
    le '\s' permet de savoir si tu as n'importe quel type d'espace (espace, tabulation, ....) et la deuxième remplace tous le type d'espace par %20 savoir ou sont présent tes espaces dans ta chaine.

    Pour supprimer tous les types d'espace en début et fin de ta chaine tu as la fonction trim()

    j'ai fait une erreur dans le code preg_replace, c'est %20 tout seul et non /%20/:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_replace('/\s/i', '%20', 'ta chaine')

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2008
    Messages : 229
    Par défaut
    Merci beaucoup, cela fonctionne comme je le souhaite. Faudra que je te paie un coup à boire parce que j'y ai passé vraiment beaucoup de temps sur ce "petit" problème.

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraction de mots clés
    Par Olive1808 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 01/02/2016, 20h49
  2. Mots clés référencement
    Par twims dans le forum Référencement
    Réponses: 10
    Dernier message: 04/06/2008, 14h31
  3. Référencement google - mots clés
    Par koKoTis dans le forum Référencement
    Réponses: 4
    Dernier message: 10/12/2007, 13h22
  4. Réponses: 10
    Dernier message: 20/11/2007, 09h01
  5. Réponses: 2
    Dernier message: 10/10/2006, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo