Filtre première phrase

Bonjour,

Je suis à la recherche d'un filtre texte pour afficher la première phrase d'un article (et non les x caractères).

Cela existe ?

Par avance merci

Bruno

Bjr,

La première phrase, c'est à dire jusqu'au premier point c'est ça ?

Le 16/03/2017 à 08:27, spip85 a écrit :

Bonjour,

Je suis à la recherche d'un filtre texte pour afficher la première
phrase d'un article (et non les x caractères).

Cela existe ?

Par avance merci

Bruno

--
Pierre

Le 16/03/2017 à 09:32, Zedd a écrit :

Bjr,

La première phrase, c'est à dire jusqu'au premier point c'est ça ?

Oui

Le 16/03/2017 à 08:27, spip85 a écrit :

Bonjour,

Je suis à la recherche d'un filtre texte pour afficher la première
phrase d'un article (et non les x caractères).

Cela existe ?

Par avance merci

Bruno

Bonjour,

Par ex une fonction dans mes_fonctions.php:

function premphrase($texte) {
  return substr($texte, 0, strpos($texte, ".")+1);
}

Ensuite à utiliser [(#TEXTE|premphrase)].

Après il faut peut-être perfectionner: que se passe-t-il si pas de point ? il faut peut-être aussi supprimer les tags HTML s'il y en a ?

Le 16/03/2017 à 09:33, spip85 a écrit :

Le 16/03/2017 à 09:32, Zedd a écrit :

Bjr,

La première phrase, c'est à dire jusqu'au premier point c'est ça ?

Oui

Le 16/03/2017 à 08:27, spip85 a écrit :

Bonjour,

Je suis à la recherche d'un filtre texte pour afficher la première
phrase d'un article (et non les x caractères).

Cela existe ?

Par avance merci

Bruno

--
Pierre

Bonjour

Le 16/03/2017 à 11:25, Zedd a écrit :

Après il faut peut-être perfectionner: que se passe-t-il si pas de point ? il faut peut-être aussi supprimer les tags HTML s'il y en a ?

Et aussi tenir compte des points d'interrogation ou d'exclamation... En excluant les cas où ils se trouvent entre parenthèses comme dans "des maisons et aussi (faut-il le préciser?) des immeubles". Si on veut faire propre, on arrive vite à des tests compliqués... :slight_smile:

Et si la phrase comporte des abréviations comme etc., ça va l'interrompre. Rien n'est simple...

Bon courage !
CM

Oui comme je disais il faut perfectionner. C'est pour ça que j'ai posé la question "jusqu'au premier point ?"", ça m'a permis de donner une solution simple :slight_smile:
Si on veut aller plus loin, il faut utiliser des expressions régulières je pense avec preg_match pour trouver la position du/des points considérés comme point d'arrêt.

Le 16/03/2017 à 11:53, Christian Marget a écrit :

Bonjour

Le 16/03/2017 à 11:25, Zedd a écrit :

Après il faut peut-être perfectionner: que se passe-t-il si pas de
point ? il faut peut-être aussi supprimer les tags HTML s'il y en a ?

Et aussi tenir compte des points d'interrogation ou d'exclamation... En
excluant les cas où ils se trouvent entre parenthèses comme dans "des
maisons et aussi (faut-il le préciser?) des immeubles". Si on veut faire
propre, on arrive vite à des tests compliqués... :slight_smile:

Et si la phrase comporte des abréviations comme etc., ça va
l'interrompre. Rien n'est simple...

Bon courage !
CM

--
Pierre

Le 16/03/2017 à 08:27, spip85 a écrit :

Bonjour,

Je suis à la recherche d'un filtre texte pour afficher la première
phrase d'un article (et non les x caractères).

Cela existe ?

Par avance merci

Bruno

Pompoms, pompoms !!!

Here's a quick helper method that I wrote to get the first N sentences of a given body of text. It takes periods, question marks, and exclamation points into account and defaults to 2 sentences.

function tease($body, $sentencesToDisplay = 2) {
     $nakedBody = preg_replace('/\s+/',' ',strip_tags($body));
     $sentences = preg_split('/(\.|\?|\!)(\s)/',$nakedBody);

     if (count($sentences) <= $sentencesToDisplay)
         return $nakedBody;

     $stopAt = 0;
     foreach ($sentences as $i => $sentence) {
         $stopAt += strlen($sentence);

         if ($i >= $sentencesToDisplay - 1)
             break;
     }

     $stopAt += ($sentencesToDisplay * 2);
     return trim(substr($nakedBody, 0, $stopAt));
}

Bonjour,
merci à tous
plus difficile que je ne pensé

Bruno

Le 16/03/2017 à 14:09, Luis Speciale a écrit :

Le 16/03/2017 à 08:27, spip85 a écrit :

Bonjour,

Je suis à la recherche d'un filtre texte pour afficher la première
phrase d'un article (et non les x caractères).

Cela existe ?

Par avance merci

Bruno

Pompoms, pompoms !!!

substring - PHP - get first two sentences of a text? - Stack Overflow

Here's a quick helper method that I wrote to get the first N sentences of a given body of text. It takes periods, question marks, and exclamation points into account and defaults to 2 sentences.

function tease($body, $sentencesToDisplay = 2) {
    $nakedBody = preg_replace('/\s+/',' ',strip_tags($body));
    $sentences = preg_split('/(\.|\?|\!)(\s)/',$nakedBody);

    if (count($sentences) <= $sentencesToDisplay)
        return $nakedBody;

    $stopAt = 0;
    foreach ($sentences as $i => $sentence) {
        $stopAt += strlen($sentence);

        if ($i >= $sentencesToDisplay - 1)
            break;
    }

    $stopAt += ($sentencesToDisplay * 2);
    return trim(substr($nakedBody, 0, $stopAt));
}

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc