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

Langage PHP Discussion :

[Tableaux] Tronquer un texte à la façon google ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 20
    Par défaut [Tableaux] Tronquer un texte à la façon google ?
    Bonjour à tous,

    j'ai un moteur de recherche interne en php qui va taper dans un table mysql pour trouver les résultats des mots recherchés. Jusque là pas de problème, j'arrive à extraire les résultats et les afficher convenablement. Cependant, ce que je cherche à faire, c'est afficher les résultats de la requete en mettant les mots cherchés en gras et mettre un certains nombre de mots avant et après les mots recherchés.

    Voici un exemple de ce que je cherche à faire (imaginons que les mots recherchés soit "Japon" et "retard") :

    Le texte original dans ma base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Quant à Sony, dont la PS2 se vend mieux que sa PS3 aux États-Unis, et à peine moins bien au Japon, il faut espérer pour l'entreprise nippone que sa console Next Gen sortira bientôt la tête de l'eau. 
     
     
    À ce jour, la Wii a, en trois mois, rattrapé de moitié son retard sur la Xbox 360. Du côté de Sony, il ne s'est malheureusement vendu qu'une PS3 pour trois Wii dans le monde. Un retard important, même si rattrapable sur le long terme.
    Le résultat que je cherche à afficher :
    ....aux États-Unis, et à peine moins bien au Japon, il faut espérer pour l'entreprise nippone....
    ....vendu qu'une PS3 pour trois Wii dans le monde. Un retard important, même si rattrapable sur le long....

    Merci pour votre aide précieuse,
    Francois

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Bonjour,

    Je ne sais pas comment fait google, parce que j'ai bien une idée de solution, mais ça doit être gourmand :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
     
    $recherche = "Japon";
     
    preg_match = ('/(.*) ($recherche) (.*)/', $chaine, $results);
     
    // ici traitement de $results[0] et $results[2] qui contiennent les deux côtés de la chaîne, en utilisant substr par exemple.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 20
    Par défaut
    Merci pour ta réponse. Cependant je n'arrive pas à faire ce que je souhaite. J'aimerais obtenir en résultat les quelques mots qui précèdent le mot recherché et les quelques mots qui suivent le mot recherché en mettant entre les deux le mot recheché en gras.

    J'aimerais donc qu'il arrive à extraire d'un texte la phrase dans laquelle se trouve le mot recherché. Dans mon exemple la fonction echo doit m'écrire :
    "....aux États-Unis, et à peine moins bien au Japon, il faut espérer pour l'entreprise nippone....".

    Désolé d'insister mais je me tire les cheveux...

    J'ai bien essayé avec ça pour avoir les 200 carctères qui précèdent le mot et les 200 qui suivent, mais ça ne marche pas :
    $position_mot = stripos($texte,$mot);
    $texte_tronque = substr($texte, $position_mot-200, 200);

    Sinon j'ai essayé avec stristr mais il me faudrait aussi la version opposé à cette fonction et je ne l'ai pas trouvé

    $texte_tronque = stristr($texte, $mot);
    Merci
    François

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 20
    Par défaut
    J'ai trouvé !!!!!!!!!! (après plusieurs heures... je n'ai plus de cheveux ! )

    Il fallait bien utiliser cela :
    $position_mot = stripos($texte,$mot);
    $texte_tronque = substr($texte, $position_mot-200, 400);

    Mais le problème se posait quand $position_mot était négatif ! Donc j'ai fait une condition que si $position_mot est négatif alors il est égale à 0 !

    Si ça peut aider quelque un, voici donc la réponse !
    Francois

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

Discussions similaires

  1. [Tableaux] traitement de texte
    Par speedev dans le forum Langage
    Réponses: 22
    Dernier message: 28/06/2006, 18h06
  2. [Tableaux] indice en texte ?
    Par bouchette63 dans le forum Langage
    Réponses: 3
    Dernier message: 12/06/2006, 18h11
  3. Réponses: 6
    Dernier message: 11/06/2006, 08h21
  4. Réponses: 6
    Dernier message: 17/03/2006, 13h23
  5. [Tableaux] Taper du texte sous DOS.
    Par kult dans le forum Langage
    Réponses: 16
    Dernier message: 17/11/2005, 16h06

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