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 :

Récupérer morceau de phrase qui contient le mot


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
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Par défaut Récupérer morceau de phrase qui contient le mot
    Bonjour,
    je suis en train de faire un moteur de recherche, qui cherche les contenus d'article de blog (Wordpress µ).
    J'affiche le titre de l'article mais j'aimerais afficher un extrait du texte (facile) mais essentiellement le texte "autour" du mot recherché (plus difficile).
    Un peu à la Google si c'est pas trop demander. Au pire, afficher juste une seule phrase d'extrait et pas forcément à chaque fois que le mot apparaît dans le contenu.

  2. #2
    Membre expérimenté Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Par défaut
    avec strpos tu peux connaitre la position de l'occurence dans le texte source,
    a partir de la tu peux afficher le texte l'entourant en specifiant les positions

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Par défaut
    Ah j'avoue, ça peut-être une solution. Je vais l'essayer.

    Là j'étais limite partie pour explode chaque phrase (avec le caractère point) et vérifier sur chaque phrase si le mot apparaissait.

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Pour trouver la phrase contenant par exemple le mot shibboleth :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /(^|[.!?\r\n])\s*(.*?\bshibboleth\b.*?($|[.!?\r\n]))/i
    La phrase sera récupérée dans $2.

    • Une phrase commence par le début du texte, un point, un point d'exclamation ou d'interrogation, ou encore un saut de ligne ou de paragraphe, donc (^|[.!?\r\n])
    • Elle se termine par les mêmes ou la fin du texte, donc ($|[.!?\r\n]).

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    Si tu utilise preg_match, tu as une option PREG_OFFSET_CAPTURE qui te renvoie la position de chaque chaine capturée ;o)

    http://fr2.php.net/fr/preg_match

    Une fois que tu as l'offset, tu peux récuperer les 100 caracteres avant, les 100 caracteres apres et découper selon les mots avec word_wrap par exemple pour éviter de couper un mot en deux.

    http://fr2.php.net/fr/word_wrap

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Par défaut
    J'ai essayé ce code là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $texte_entier = "Au beau milieu de sa lune de miel avec les italiens, la vraie nature de Berlusconi refait surface. Une nature dominee par interet personnel apres la strategie des sourires et de la respectabilite. Berlusconi est pret a tout. On doit attendre au pire, a moins que nous y soyons deja";
     
    preg_match_all("/(^|[.!?\r\n])\s*(.*?\bdeja\b.*?($|[.!?\r\n]))/i",$texte_entier,$tabs);
    // Affichage du tableau résultant
    foreach($tabs[0] as $tab) {
    	echo $tab."<br>";
    }
    En clair je recherche la phrase qui contient le mot "deja", mais il me sort toutes les phrases précédents ma phrase (en clair tout le texte quoi parce que c'est le dernier mot).

    Si je tape "entrée" à chaque fin de phrase, là il me sort bien ma phrase (avec un point+espace devant) :
    . On doit attendre au pire, a moins que nous y soyons deja

Discussions similaires

  1. Script qui contient le mot de passe du root
    Par L'aigle de Carthage dans le forum Shell et commandes GNU
    Réponses: 19
    Dernier message: 02/12/2014, 11h37
  2. Réponses: 13
    Dernier message: 02/11/2011, 08h47
  3. trouver l'article qui contient un mot precis
    Par cyndhia dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/07/2008, 14h55
  4. [RegEx] Récupérer la ligne qui contient un mot
    Par waldoun dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2008, 09h16
  5. [MySQL] Afficher les entrées d'une table qui contient un mot précis
    Par anarchoi dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 02/05/2007, 21h15

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