RE: [Spip] fonction intro 150

Bonjour,

Juste au passage, la fonction donnée peut avoir des résultats un peu bizarres si le texte utilisé comporte des tags HTML. Voici deux fonctions que j'ai écrites pour cela (la seconde utilise une fonction spécifique à PHP4, par contre) :

function tronquer($texte) {
  $max_caracteres=150;
  $textetemp=preg_replace("/<(.*?)>/s","",$texte);
  if(strlen($textetemp)>$max_caracteres) return "<p class='spip'>".substr($textetemp,0,$max_caracteres)."...</p>";
    else return "<p class='spip'>$textetemp</p>"; }

function court($texte) {
  $max_caracteres=150;
  $trans_tbl = array_flip(get_html_translation_table(HTML_ENTITIES));
  $texte = htmlentities(substr(strtr($texte, $trans_tbl),0,$max_caracteres))." (...)";
  return $texte; }

Le problème de faire un substr sur un texte "brut" est que, d'une part, le texte en question peut comporter pas mal de caractères "inutiles" servant à la mise en forme, ce qui restreint d'autant la longueur du texte final. "<B>Hello</B>", par exemple, c'est déjà 12 caractères, et pas seulement 5.

Ensuite, on a toujours le risque de tronquer à un endroit à problème, et de laisser un tag non refermé ou pire, de trancher en plein milieu d'un tag.

Les deux fonctions que je propose ont l'avantage de virer tous les tags avant de tronquer le texte, ce qui évite ces deux problèmes. Par contre, on y perd la mise en forme ...
           XaV
--
Get your free email from www.uymail.com

Powered by Outblaze

From karoshi@uymail.com Thu Dec 5 01:20:05 2002

Return-Path: <karoshi@uymail.com>
Received: from spf0.us4.outblaze.com (205-158-62-68.outblaze.com
  [205.158.62.68])
  by miel.brainstorm.fr (Postfix) with SMTP id 72BD61C01D
  for <spip@rezo.net>; Thu, 5 Dec 2002 01:20:04 +0100 (CET)
Received: (qmail 67762 invoked by uid 1017); 5 Dec 2002 00:20:03 -0000
Received: (qmail 66706 invoked from network); 5 Dec 2002 00:19:53 -0000
Received: from unknown (HELO ws4-4.us4.outblaze.com) (205.158.62.105)
  by 205-158-62-153.outblaze.com with SMTP; 5 Dec 2002 00:19:53 -0000
Received: (qmail 25712 invoked by uid 1001); 5 Dec 2002 00:19:53 -0000
Message-ID: <20021205001953.25706.qmail@uymail.com>
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
X-Mailer: MIME-tools 5.41 (Entity 5.404)
Received: from [210.236.237.153] by ws4-4.us4.outblaze.com with http for
    karoshi@uymail.com; Thu, 05 Dec 2002 08:19:52 +0800
From: "Xavier G." <karoshi@uymail.com>
To: <valentin@guenichon.com>, spip@rezo.net
Date: Thu, 05 Dec 2002 08:19:52 +0800
Subject: Re: [Spip] Dernier article de chaque rubrique
X-Originating-Ip: 210.236.237.153
X-Originating-Server: ws4-4.us4.outblaze.com
X-BeenThere: spip@rezo.net
X-Mailman-Version: 2.1b5+
Precedence: list
List-Id: SPIP : questions/reponses <spip.rezo.net>
List-Help: <mailto:spip-request@rezo.net?subject=help>
List-Post: <mailto:spip@rezo.net>
List-Subscribe: <http://listes.rezo.net/mailman/listinfo/spip&gt;,
  <mailto:spip-request@rezo.net?subject=subscribe>
List-Archive: <Discuter chez rezo.net;
List-Unsubscribe: <http://listes.rezo.net/mailman/listinfo/spip&gt;,
  <mailto:spip-request@rezo.net?subject=unsubscribe>
X-List-Received-Date: Thu, 05 Dec 2002 00:20:05 -0000
Status: O
Content-Length: 1175
Lines: 27

Bonjour,

Ben, c'est le probleme en fait.
J'ai des rubriques/secteurs qui contiennent des articles et d'autres
qui contiennent des rubriques (qui contiennent des articles).
Alors voila pourquoi je ne m'en sors pas... Surtout que je veux un
systeme récursif total. Mais c'est pas grave, je vais seulement
réorganiser ma mise en page...

Tu devrais pouvoir t'en sortir avec des boucles imbriquées. Un truc du genre :

<BOUCLE_maListe(RUBRIQUES){id_rubrique=??}>
  <BOUCLE_mesRubriques(RUBRIQUES){id_parent}>
    <B_DernierArticle>
      <BOUCLE_NomRubrique(RUBRIQUES){id_rubrique}>#TITRE</BOUCLE_NomRubrique>
    <BOUCLE_DernierArticle(ARTICLES){id_rubrique}{par date}{inverse}{0,1}>#TITRE</BOUCLE_DernierArticle>
    <BOUCLE_Liste_Boucle(boucle_mesRubriques)></BOUCLE_Liste_Boucle>
  </BOUCLE_mesRubriques>
</BOUCLE_maListe>

En gros, cela parcours toute l'arborescence en partant de la rubrique indiquée dans la boucle maListe, et n'affiche le titre de la rubrique que s'il y a un article affiché dans la boucle DernierArticle.
C'est un peu brutal comme procédé, mais ça marche ...
        XaV
--
Get your free email from www.uymail.com

Powered by Outblaze

From zerrel@univ-lyon2.fr Thu Dec 5 08:22:00 2002

Return-Path: <zerrel@univ-lyon2.fr>
Received: from mailhost.univ-lyon2.fr (louis.univ-lyon2.fr [159.84.44.32])
  by miel.brainstorm.fr (Postfix) with ESMTP id 43AED1C02A
  for <spip@rezo.net>; Thu, 5 Dec 2002 08:22:00 +0100 (CET)
Received: from aragon.univ-lyon2.fr (aragon [159.84.65.179])IAA23528
  for <spip@rezo.net>; Thu, 5 Dec 2002 08:21:59 +0100 (MET)
Date: Thu, 5 Dec 2002 08:21:57 +0100
Mime-Version: 1.0 (Apple Message framework v482)
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Subject: =?ISO-8859-1?Q?R=E9p_:_[SPIP]_date?=
From: zerrel@univ-lyon2.fr
To: spip <spip@rezo.net>
Content-Transfer-Encoding: quoted-printable
Message-Id: <3D121B1A-0822-11D7-9932-00039371D682@univ-lyon2.fr>
X-Mailer: Apple Mail (2.482)
X-BeenThere: spip@rezo.net
X-Mailman-Version: 2.1b5+
Precedence: list
List-Id: SPIP : questions/reponses <spip.rezo.net>
List-Help: <mailto:spip-request@rezo.net?subject=help>
List-Post: <mailto:spip@rezo.net>
List-Subscribe: <http://listes.rezo.net/mailman/listinfo/spip&gt;,
  <mailto:spip-request@rezo.net?subject=subscribe>
List-Archive: <Discuter chez rezo.net;
List-Unsubscribe: <http://listes.rezo.net/mailman/listinfo/spip&gt;,
  <mailto:spip-request@rezo.net?subject=unsubscribe>
X-List-Received-Date: Thu, 05 Dec 2002 07:22:00 -0000
Status: O
Content-Length: 1449
Lines: 42

Salut,

> Que c'est quand m=EAme vachement de la chance d'utiliser spip: =
suivant=20
les ann=E9es on gagne deux =E0 trois jours de plus!
29-30-31 f=E9vrier, 31 avril, 31 juin, 31 septembre, 31 novembre, =E7a=20=

fait..... un peu plus que deux =E0 trois jours, non ? Tu ne pensais=20
peut-=EAtre qu'=E0 f=E9vrier ?

> Ouais, et en plus il fera beau, et comme le logiciel est bien concu,=20=

ca tombe un dimanche...
c'=E9tait de l'humour ? J''vais finir allergique m=F4 !

> =E7a n'arrive que si on le fait manuellement !
j'entends bien, c'est donc possible.

> y a qu'un "tordu des boyaux d'la t=EAte" pour trouver ce "bug" :'-D
tordu, p't=EAte p=F4. C'est arriv=E9 lorsque quelqu'un a voulu changer =
la date=20
de publication d'un article (pour le faire remonter) et par inadvertance=20=

il obtient le 31 juin.

> moi perso ... je trouve qu'on s'en fou !
Tu penses et parles pour les autres ? C'est qui le "on" ? "moi perso",=20=

j'arrive vaguement =E0 mettre quelqu'un derri=E8re, mais =E0 part delon, =
tu es=20
le premier que je vois passer de la premi=E8re personne du singulier, =E0 =
la=20
troisi=E8me comme si de rien n'=E9tait.
La liste est l'endroit me semble-t'il ou les "cas singuliers",=20
"extraordinaires", doivent =EAtre expos=E9s ? non ?.
  Cela ne te para=EEt pas extraordinaire (au sens en dehors de =
l'ordinaire)=20
une date irr=E9elle ?

C'est un truc qui est arriv=E9 chez nous, cela peut arriver ailleurs.

Tch=F4!