SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 35 visiteurs en ce moment

Accueil du site > Rédaction > Assistants de rédaction > Aide à l’édition > Mesurer la longueur d’un article

Mesurer la longueur d’un article

16 novembre 2004 – par François Schreuer – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

4 votes

Un petit article à vocation pédagogique pour montrer comment il est possible d’utiliser un filtre php dans spip.

Il peut être utile de compter le nombre de signes, de caractères ou de mots d’un article (comme par exemple ici).

Voici, exposé en quelques étapes simple, comment réaliser cela dans un squelette spip.

Longueur d’un champ

Pour compter très simplement le nombre de signes dans un champ, ajoutez ceci dans votre squelette à l’endroit où vous souhaitez placer l’information.

Quelques explications :

  • Le filtre textebrut supprime les balises html et autres broutilles qui ne rentrent pas en ligne de compte dans le chiffre que nous souhaitons obtenir.
  • Comme toute fonction php, strlen peut-être utilisée comme filtre spip. Le cas présent est très simple puisqu’un seul paramètre est requis par la fonction.
  • Notez qu’il est essentiel de respecter l’ordre des filtres : le texte doit passer par textebrut avant le comptage des signes.

Sans les blancs

Rigoureusement parlant, nous venons de compter les signes d’un champ. Nous pouvons aussi compter seulement les caractères (soit les signes sans les blancs).

Pour ce faire, on commence par créer un filtre supprimer_blancs ad hoc, à placer dans le fichier mes_fonctions.php3 (à créer, si nécessaire, dans la racine de votre spip).

Il ne reste plus qu’à appeler ce filtre dans votre squelette.

Longueur d’un article

Pour compter non plus la longueur d’un seul champ, mais la longueur de tout un article, le plus simple est sans doute d’utiliser une ligne de php directement dans le squelette :

De même, si vous ne voulez compter que les caractères, sans inclure les blancs, il suffit de placer ceci dans votre squelette (sans oublier de placer le filtre supprimer_blancs dans votre fichier mes_fonctions.php3).

Nombre de mots

Il est aussi possible de compter le nombre de mots contenus dans un champ.

Pour ce faire, nous allons retirer du texte tout ce qui risquerait d’interférer dans le comptage : ponctuation, appel de notes de bas de page, espaces excédentaires,... C’est l’objet des fonctions supprimer_notes et supprimer_ponctuation. Ensuite, il suffit de placer chaque mot dans un tableau et de retourner la taille du tableau, ce que fait la fonction nombre_de_mots, qui peut être appelée comme filtre depuis un squelette. Enfin, la fonction number_format_fr permet d’afficher les nombres obtenus en espaçant les milliers avec des espaces insécables.

De la même façon qu’on avait procédé pour le comptage des signes, on peut donc afficher le nombre de mots d’un article, tous champs confondus, de la manière suivantes.

Retour en haut de la page

Vos commentaires

  • Le 2 février 2006 à 14:50, par jojo En réponse à : Mesurer la longueur d’un article

    Sur le sommaire j’affiche le chapo et s’il n’existe pas le texte filtré avec couper_mot. Dans les 2 cas, je met un lien sur l’article.
    Si le texte est court je voudrais afficher l’article en entier sans mettre un lien sur l’article ..

    Auriez vous une idée de la boucle ?
    merci

    Répondre à ce message

  • Le 18 août 2005 à 23:14, par Bernard En réponse à : > Mesurer la longueur d’un article

    Serait il possible d’adapter cette contrib pour obliger les redacteurs à ne pas dépasser 2500 caractères tout compris lors de la rédaction d’un article..
    Ceci pour éviter les pages au kilomètres ;o)
    Merci d’avance

    • Le 19 août 2005 à 00:43, par François En réponse à : > Mesurer la longueur d’un article

      Salut,

      Serait il possible d’adapter cette contrib pour obliger les redacteurs à ne pas dépasser 2500 caractères tout compris lors de la rédaction d’un article..
      Ceci pour éviter les pages au kilomètres ;o)

      Pas vraiment ou enfin si — tout est possible —, mais alors ce ne sera pas une « adaptation » de la présente contrib, qui se contente de traiter les données pour les afficher dans l’espace public.

      Cela dit, c’est une vraie usine à gaz que de vouloir empêcher les rédacteurs de poster au-delà d’un certain nombre de signes, qui risque en plus de se révéler assez embêtante à l’usage (parce que bon, 2500 signes, c’est court, hein). Est-ce qu’il ne vaut pas mieux en parler avec les rédacteurs via le forum interne ou via une annonce interne ?

      Ce qui serait peut-être utile, par contre, c’est de connaître la longueur des articles dans l’interface privée (et ça c’est assez facile à faire — il suffit de patcher ecrire/articles.php3).

      François

    • Le 21 août 2005 à 14:58, par Bernard Blazin En réponse à : > Mesurer la longueur d’un article

      En fait j’ai tenté ça, mais ça me bloque uniquement si je veux retoucher l’article, donc ce n’est pas bon.

      if(strlen($texte)>2500)
      {
      exit('trop de caractères');
      }
      echo substr($texte,0,2500); //ne prend que les 2500 premiers caractères

      En fait ta proposition ne peut s’appliquer dans mon cas.
      J’ai beaucoup d’auteurs (site de littérature) et ceux ci sont incorrigibles ! _ Pas moyen de les limiter ! Il me font des romans et cela je n’en veux pas. Je veux une page au format écran ou presque.
      Il me faut donc limiter les caractères lors de la saisie et si possible faire apparaitre un petit compteur du nombre de caractères restants.
      Pour ceux qui auraient envie de faire une contrib interessante ! Je ne suis pas assez bon en php..
      Mais je te remercie néanmoins pour ta réponse rapide.

    • Le 21 août 2005 à 16:19, par Bernard Blazin En réponse à : > Mesurer la longueur d’un article

      Ca y’est j’ai trouvé un système ! Dans articles.php3 (spip 1.8.1) après la ligne 1601 je rajoute mon code ainsi :

      //
      // "Demander la publication"
      //
      if(strlen($texte)>2500)
      {
      exit('Vous avez dépassé 2500 caractères! Veuillez modifier votre texte et le réduire avant de pouvoir le proposer');
      }
      echo substr($texte,0,2500); //ne prend que les 2500 premiers caractères

      Ainsi si le redacteur dépasse 2500 caractères il ne peut pas proposer son texte à la publication. Il lui faut retoucher son article et passer en dessous du nombre butoir pour pouvoir reproposer son texte.
      J’imagine que ma solution est un peu archaïque, mais je débute en php.
      j’aimerai toutefois trouver la solution pour afficher un compteur de caractères qui s’incremente lors de la saisie et qui bloque tout à 2500 caractères, ce serait plus élégant.

    • Le 21 août 2005 à 19:01, par François Schreuer En réponse à : > Mesurer la longueur d’un article

      J’imagine que ma solution est un peu archaïque

      Oui, de fait. Utiliser un « exit » en plein milieu du code, c’est quand même assez violent (j’imagine que le pied de page ne s’affiche pas, voire que l’aspect graphique de la page est un peu chamboulé ?).

      Sur le fond, je reste très moyennement convaincu de l’utilité d’imposer une limite aussi sévère aux rédacteurs (tu n’a pas peur que ça les fasse fuir ?), mais bon, ça c’est ton problème.

      François

    • Le 26 août 2005 à 20:07, par Bernard Blazin En réponse à : > Mesurer la longueur d’un article

      Non tout est impeccable.. L’exit arrive après un « if » donc la violence est modérée ;o)
      Par contre cela ne fonctionne pas sous 1.8.2. Si ça interesse quelqu’un j’ai la solution pour la 1.2

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d'abord sur gravatar.com (gratuit et indolore) et n'oubliez pas d'indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Zpip-dist en HTML5

    15 juin 2010 – 10 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Une surcharge des squelettes Zpip-dist qui tire parti des nouvelles balises offertes par la spécification HTML5. Attention, ce plugin n’est plus compatible avec les nouvelles versions de Zpip, qui a connu plusieurs incompatibilités de nomenclature (...)

  • Une licence pour un article

    18 avril 2007 – 25 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Sur une idée originale de erational, voici un plugin permettant de lier une licence à un article.

  • Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.