[SPIP Zone] petits améliorations du bouton memo

Bonsoir,

J'ai fait quelques ajouts dans le code du bouton memo que j'utilise.
Certains trucs sont assez spécifiques et sans doute gênant pour
certains, donc je préfère ne pas commiter sur la zone, mais voici quand
même une proposition d'ajout de code du côté de la ligne 235 :

        // Nettoyage des italiques
        $texte = str_replace('}{','',$texte);
        $texte = str_replace('} {',' ',$texte);
        $texte = str_replace('{ }',' ',$texte);
        $texte = str_replace('{ ',' {',$texte);
        $texte = str_replace(' }','} ',$texte);
        $texte = str_replace(',}','},',$texte);
        $texte = str_replace(', }','}, ',$texte);
        $texte = str_replace(',{ ',', {',$texte);
        $texte = str_replace('" }','"} ',$texte);
        $texte = str_replace('{ "','{ "',$texte);
        $texte = str_replace('".}','"}.',$texte);

  // Guillemets français (en fonction des italiques nettoyées)
  // Uniquement valable pour du contenu francophone
        $texte = str_replace('"','"',$texte);
        $texte = str_replace('{"','{«',$texte);
        $texte = str_replace('"}','»}',$texte);

        // Semi cadratins -> raccourci typo
  // (incomplet, certains types ne sont pas traduits)
        $texte = str_replace('&150;','--',$texte);
        $texte = str_replace('&151;','--',$texte);
        $texte = str_replace('—','--',$texte);

        // Apostrophes -- indispensable pour lesoir.be notamment
        $texte = str_replace(''','\'',$texte);

        // Monsieur & Madame
        $texte = str_replace(' M. ',' M.~',$texte);
        $texte = str_replace(' Mme ',' M<sup>me</sup>~',$texte);

        // Siècles
        $texte = str_replace('XVIIIe ','XVIII<sup>e</sup>~',$texte);
        $texte = str_replace('XIXe ','XIX<sup>e</sup>~',$texte);
        $texte = str_replace('XXe ','XX<sup>e</sup>~',$texte);
        $texte = str_replace('XXIe ','XXI<sup>e</sup>~',$texte);

        // Autres petits nettoyages html -> lesoir.be
        $texte = str_replace('&#40;','(',$texte);
        $texte = str_replace('&#41;',')',$texte);

  $texte = addslashes($texte);

Par ailleurs, je constate que certains sites (par exemple celui de Libé)
ne paragraphent plus leur contenu avec des <p> comme il est d'usage mais
font des <div>. C'est très sale comme façon de faire. Mais si l'on veut
pouvoir traiter ce type de contenu, il faudrait peut-être que le bouton
mémo considère les <div> comme des paragraphe. Vous en pensez quoi ?

++

François

Re-bonsoir,

Le jeudi 13 juillet 2006 à 20:29 +0200, François Schreuer a écrit :

J'ai fait quelques ajouts dans le code du bouton memo que j'utilise.
Certains trucs sont assez spécifiques et sans doute gênant pour
certains, donc je préfère ne pas commiter sur la zone, mais voici quand
même une proposition d'ajout de code du côté de la ligne 235 :

J'ai ai finalement fait une fonction, que voici :

// Nettoyages complementaires
function nettoyage_memo($texte,$lang='fr') {

        // Divers ajouts pour nettoyer le resultat genere
        $texte = str_replace('}{','',$texte);
        $texte = str_replace('} {',' ',$texte);
        $texte = str_replace('{ }',' ',$texte);
        $texte = str_replace('{ ',' {',$texte);
        $texte = str_replace(' }','} ',$texte);
        $texte = str_replace(',}','},',$texte);
        $texte = str_replace(', }','}, ',$texte);
        $texte = str_replace('{ ',' {',$texte);
        $texte = str_replace('{ ',' {',$texte);
        $texte = str_replace('&#34;','"',$texte);
        $texte = str_replace('" }','"} ',$texte);
        $texte = str_replace('{ "',' {"',$texte);
        $texte = str_replace('".}','"}.',$texte);

        // Guillemets francais
        if($lang=='fr') {
                $texte = str_replace('{"','{«',$texte);
                $texte = str_replace('"}','»}',$texte);
                $texte = str_replace('&laquo;','«',$texte);
                $texte = str_replace('&raquo;','»',$texte);
                $texte = str_replace('«{','{«',$texte);
                $texte = str_replace('}»','»}',$texte);
        }

        // Semi cadratins - a completer : marche pas partout
  // (i.e. le diplo)
        $texte = str_replace('&150;',' --',$texte);
        $texte = str_replace('&151;',' --',$texte);
        $texte = str_replace('&mdash;',' --',$texte);

        // Conversion des apostrophes : elles doivent être stockées dans
  // la base sous forme de simples "'"
        // -> indispensable pour lesoir.be notamment
        $texte = str_replace('&#39;','\'',$texte);
        $texte = str_replace('&rsquo;','\'',$texte);

        // Pourcentages : un petit insecable, c'est mieux
        $texte = preg_replace(",([0-9]+) %,","\\1~%",$texte);

        // Milliers : insecables entre les groupes de chiffres
  // (a ameliorer)
        $texte = str_replace(' 000','~000',$texte);

        // Monsieur & Madame
  if($lang=='fr') {
           $texte = str_replace(' M. ',' M.~',$texte);
          $texte = str_replace(' Mme ',' M<sup>me</sup>~',$texte);
  }

        // Ordinaux romaine (Siècles, numeros d'arrondissements,...)
  if($lang=='fr') {
        $texte = str_replace('Ier ','I<sup>er</sup>~',$texte);
        $texte = str_replace('IIe ','II<sup>e</sup>~',$texte);
        $texte = str_replace('IIIe ','III<sup>e</sup>~',$texte);
        $texte = str_replace('IVe ','IV<sup>e</sup>~',$texte);
        $texte = str_replace('Ve ','V<sup>e</sup>~',$texte);
        $texte = str_replace('VIe ','VI<sup>e</sup>~',$texte);
        $texte = str_replace('VIIe ','VII<sup>e</sup>~',$texte);
        $texte = str_replace('VIIIe ','VIII<sup>e</sup>~',$texte);
        $texte = str_replace('IXe ','IX<sup>e</sup>~',$texte);
        $texte = str_replace('Xe ','X<sup>e</sup>~',$texte);
        $texte = str_replace('XIe ','XI<sup>e</sup>~',$texte);
        $texte = str_replace('XIIe ','XII<sup>e</sup>~',$texte);
        $texte = str_replace('XIIIe ','XIII<sup>e</sup>~',$texte);
        $texte = str_replace('XIVe ','XIV<sup>e</sup>~',$texte);
        $texte = str_replace('XVe ','XV<sup>e</sup>~',$texte);
        $texte = str_replace('XVIe ','XVI<sup>e</sup>~',$texte);
        $texte = str_replace('XVIIe ','XVII<sup>e</sup>~',$texte);
        $texte = str_replace('XVIIIe ','XVIII<sup>e</sup>~',$texte);
        $texte = str_replace('XIXe ','XIX<sup>e</sup>~',$texte);
        $texte = str_replace('XXe ','XX<sup>e</sup>~',$texte);
        $texte = str_replace('XXIe ','XXI<sup>e</sup>~',$texte);
  }

        // Autres petits nettoyages html -> lesoir.be
        $texte = str_replace('&#40;','(',$texte);
        $texte = str_replace('&#41;',')',$texte);
        $texte = str_replace('&eacute;','é',$texte);
        $texte = str_replace('&Eacute;','É',$texte);
        $texte = str_replace('&egrave;','è',$texte);
        $texte = str_replace('&ecirc;','ê',$texte);
        $texte = str_replace('&icirc;','î',$texte);
        $texte = str_replace('&ocirc;','ô',$texte);
        $texte = str_replace('&Ocirc;','Ô',$texte);
        $texte = str_replace('&ugrave;','ù',$texte);
        $texte = str_replace('&agrave;','à',$texte);
        $texte = str_replace('&Agrave;','À',$texte);
        $texte = str_replace('&ccedil;','ç',$texte);
        $texte = str_replace('&Ccedil;','Ç',$texte);

        return $texte;
}

Par ailleurs, je constate que certains sites (par exemple celui de Libé)
ne paragraphent plus leur contenu avec des <p> comme il est d'usage mais
font des <div>. C'est très sale comme façon de faire. Mais si l'on veut
pouvoir traiter ce type de contenu, il faudrait peut-être que le bouton
mémo considère les <div> comme des paragraphe. Vous en pensez quoi ?

Ceci suffit à obtenir l'effet voulu :

  // on traite les div comme des paragraphes
  $lapage = str_replace("<div", "<p", $lapage);

François

Tu pourrais commit, tu sais :slight_smile:
Au passage essaie de transformer le bouton mémo en plugin, il servira
beaucoup plus ?

J'ai ai finalement fait une fonction, que voici :

// Nettoyages complementaires
function nettoyage_memo($texte,$lang='fr') {

-- Fil

(je réponds à un message qui date de juillet)

François Schreuer wrote:

        $texte = str_replace('Ier ','I<sup>er</sup>~',$texte);

Si tu veux, il y a quelques entités HTML pour les chiffres romains, cf. Unicode Characters in the Number Forms Block, toutes les entités ROMAN NUMERAL.

--

Olivier G.
http://www.lespacedunmatin.info/blog/