[RESOLU] Sélectionner une phrase à partir d'un mot

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Sélectionner une phrase à partir d'un mot

Re: Sélectionner une phrase à partir d'un mot

par JacquesDumont » 03 janv. 2015, 16:05

Merci Arthur

Re: Sélectionner une phrase à partir d'un mot

par @rthur » 02 janv. 2015, 13:20

En fait il faut que tu définisses ce qui caractérise un début et une fin de phrase.
Si on considère qu'une phrase commence par un début de ligne ou par le point de la phrase précédente, et se termine par un point ou une nouvelle ligne, voila ce que j'ai fait pour capturer les phrases contenant les mots "con" et "idiot" :

Code : Tout sélectionner

(?:^|\.|\n)([^\.\n]*(?:\Wcon\W|\Widiot\W)[^\.\n]*)
Petite explication de ce motif regex :
( ) :arrow: les parenthèses indiquent un groupe de caractères/mots que l'on veut capturer
(?: ) :arrow: indique un groupe de caractères/mots non capturant (mais si il est lui même situé à l'intérieur de parenthèses simples, alors on va le capturer mais pas de façon séparée.
^ :arrow: représente le début de la zone de texte
\. :arrow: représente le caractère point
\n :arrow: représente une nouvelle ligne
| :arrow: représente un "OU" logique
\W :arrow: représente un caractère qui ne fait pas partie d'un mot (espace, virgule, point-virgule, etc...)

Tu peux voir le résultat (et le modifier et améliorer) avec l'outil suivant :
http://regexr.com/3a5b1




Voila ce que ça donnerai en PHP avec preg_match_all() :
<?php

$texte="lorem ipsum idiot sit amet, consectetur 
adipiscing elit. Aenean sit amet luctus elit. Suspendisse faucibus sollicitudin felis, tristique pellentesque purus tincidunt nec. integer a ex con ligula facilisis suscipit vel a dui. Nam fermentum gravida dolor, at interdum coni mattis non. usce pulvinar, sem 
sed tincidunt sollicitudin, nulla diam tincidunt con, in pulvinar purus purus sit amet ipsum. Sed eget nunc diam. Proin non magna non purus suscipit congue. In in ornare orci. Donec consequat ante eu mi dictum porttitor. Aliquam ac idiot fringilla, tincidunt neque sed, varius sapien. Vestibulum volutpat ultricies odio et accumsan. Aenean sagittis, nulla nec rhoncus blandit, neque lectus tincidunt odio, sed sollicitudin lectus libero ac nulla. Nulla viverra finibus con.";


$motif_regex="/(?:^|\.|\n)([^\.\n]*(?:\Wcon\W|\Widiot\W)[^\.\n]*)/";

preg_match_all($motif_regex, $texte, $matches);

var_dump($matches[1]);

Re: Sélectionner une phrase à partir d'un mot

par tof73 » 31 déc. 2014, 17:37

Sélectionner une phrase à partir d'un mot

par JacquesDumont » 31 déc. 2014, 16:58

Bonjour, j'aimerai créer un filtre anti-insulte pour un petit forum que je code.

Je voudrais que si il y a une insulte dans ma table "topic_reponses" la phrase entière soit listée dans mon administration.

Pour cela, j'ai besoin de lister la phrase entière à partir d'un mot (ex: p*).
Dans une phrase: "Tu es un p*"

Ma question: comment sélectionner une phrase à partir d'un mot ? même si il est en milieu / fin de phrase ?