Obtenir un extrait de texte

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 : Obtenir un extrait de texte

par Sékiltoyai » 31 juil. 2007, 20:53

Pour le problème du texte qui tient sur une ligne, tu peux utiliser l'option “D” qui considère le début et la fin réelle de la chaine (sans cette option, une nouvelle ligne est considérée comme limitateur de chaine).
Sinon, pense bien à tester l'expression, et de l'optimiser (là elle est un peu bourrin quand même, …)

par Arcanis » 31 juil. 2007, 19:39

Ah! Ca a l'air de marcher, en fait. C'est juste qu'il faut que le texte tienne sur une seule ligne. A la limite, ça m'arrange, donc bon...
Merci!

par Sékiltoyai » 31 juil. 2007, 19:22

Non, ca sert à lui indiquer de considérer qu'il y a les 4 mots s'il arrive à la fin ou s'il part du début de la chaine.
Vérifie les résultats de preg_match_all() avec un var_dump()

par Arcanis » 31 juil. 2007, 19:09

ça avance, maintenant il réunit tous, mais il ne réunit qu'une phrase alors qu'il y a plusieurs occurences. Ce ne serait pas à cause des délimiteur ^et $?

par Sékiltoyai » 31 juil. 2007, 19:05

Met un ? après ton second {1,4} histoire de le rendre gourmand.

par Arcanis » 31 juil. 2007, 18:25

Il y a un plus: maintenant, il y a un mot après le texte qui est sélectionné

par Sékiltoyai » 31 juil. 2007, 18:04

'/(^|(^|\W+(\w+)){1,4}\W+)lorem($|\W+((\w+)\W+|$){1,4})/Ui'
Ca peut peut être marcher…

par Arcanis » 31 juil. 2007, 17:51

Bon, j'ai un peu avancé depuis tout-à-l'heure. Maintenant, je réussis à sortir les 4 mots qui précèdent, mais pas les quatres mots qui suivent... :(
preg_match_all('#(([^ ]* ){1,4} ?lorem( ([^ ]*)){1,4})#Ui',$tmp['contentText'],$words);
echo '<pre>'.print_r($words,true).'</pre>';
Et pour le 'ça ne marche pas', c'est qu'il me retourne soit un texte tronqué je ne sais pas comment, sois un texte complet :?

par Sékiltoyai » 31 juil. 2007, 17:44

Utilise preg_replace() plutôt. Et “ca ne marche pas”, ca ne veut rien dire…

Obtenir un extrait de texte

par Arcanis » 31 juil. 2007, 16:42

Salut à tous!
Mon nouveau problème consisite à obtenir un extrait d'un texte. En fait, l'entrée est un texte de ce type:
Lorem ipsum dolor sit amet consectetuer eu fermentum urna Lorem nisl. Justo et convallis libero eget magna Curabitur nulla justo feugiat nibh. Dui Vivamus at mauris eros Curabitur Aliquam wisi Quisque id augue. Id sit sed auctor tellus egestas justo Sed sollicitudin consequat platea. Donec vel sociis quis Nam Donec ac id quis.
Mais à la sortie, il faut que ça devienne:
Lorem ipsum dolor sit amet consectetuer [...] eu fermentum urna Lorem nisl. Justo et convallis libero eget [...]
En fait, il faut qu'il trouve les mots-clés, et qu'il sélectionne les X mots précédents et suivants, et ce pour un certain nombre de phrases uniquement (pour ne pas surcharger la description)...
J'ai essayé avec les regexp (preg_matrch_all) mais ça ne marche pas...
Est-ce que vous sauriez comment faire?

Merci!

(pour info, ma regex est: ((([^ ]* )*)lorem(( [^ ]*)*))#Uis)