Ignore:
Timestamp:
Dec 10, 2015, 10:32:48 AM (4 years ago)
Author:
booz@…
Message:

nettoyer le xml de Quark

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/convertisseur/trunk/extract/quark_xml.php

    r93490 r93509  
    11<?php
     2
     3// Sait-on extraire ce format ?
     4$GLOBALS['extracteur']['quark_xml'] = 'extracteur_quark_xml';
     5
     6function extracteur_quark_xml($fichier, &$charset) {
     7        if (lire_fichier($fichier, $texte)) {           
     8                return convertir_extraction_quark_xml($texte);
     9        }
     10}
    211
    312function convertir_extraction_quark_xml($c) {
     
    5059                $item["dossier"] = str_replace(".qxp", "", $item["mise_en_page"]) ;
    5160        }
    52 
    53         // type d'article
    54        
    55        
    56        
    5761
    5862        // L'article et son illustration son dans des <spread>
     
    213217}
    214218
    215 function extracteur_quark_xml($fichier, &$charset) {
    216         if (lire_fichier($fichier, $texte)) {           
    217                 return convertir_extraction_quark_xml($texte);
    218         }
    219 }
    220 
    221 // Sait-on extraire ce format ?
    222 $GLOBALS['extracteur']['quark_xml'] = 'extracteur_quark_xml';
    223219
    224220
     
    230226    return $text;
    231227}
     228
     229
     230//
     231function nettoyer_xml_quark($xml){
     232       
     233        $texte = $xml ;
     234       
     235        $texte = preg_replace("/\R+/","",$xml);
     236        $texte = preg_replace("/>\s+</","><",$texte);
     237       
     238        // espace insécable en balise vide.
     239        $texte = preg_replace("/<RICHTEXT MERGE=\"false\" NONBREAKING=\"true\"\/?>(<\/RICHTEXT>)?/ims", "<RICHTEXT MERGE=\"false\" NONBREAKING=\"true\">~</RICHTEXT>", $texte);
     240        $texte = preg_replace("/<RICHTEXT[^>]+><\/RICHTEXT>/ims", "<RICHTEXT> </RICHTEXT>", $texte);
     241       
     242        $ital = false ;
     243       
     244        foreach(extraire_balises($texte, "RICHTEXT") as $b){
     245               
     246                // itals sur plusieurs balises
     247               
     248                $prefixe_ital = "" ;
     249                $ital_statut = extraire_attribut($b, "ITALIC");
     250                if(!$ital AND $ital_statut == "true"){
     251                        // début d'un ital
     252                        $prefixe_ital = "{" ;
     253                        $ital = true ;
     254                }elseif($ital AND $ital_statut == "true"){
     255                        // ital qui continue
     256                        $prefixe_ital = "" ;
     257                        $ital = true ;
     258                }elseif($ital AND !$ital_statut){
     259                        // fin d'ital
     260                        $prefixe_ital = "}" ;
     261                        $ital = false ;
     262                }
     263               
     264                // gras
     265                $gras_statut = extraire_attribut($b, "BOLD");
     266                if($gras_statut == "true"){
     267                        $gras_debut = "{{" ;
     268                        $gras_fin = "}}" ;
     269                }else{
     270                        $gras_debut = "" ;
     271                        $gras_fin = "" ;
     272                }
     273                       
     274                $b = supprimer_tags($b);
     275               
     276                $texte_clean .= $prefixe_ital . $gras_debut . $b . $gras_fin  ;
     277                //var_dump("<pre>",htmlspecialchars($texte_clean));
     278        }
     279       
     280        // fermer l'ital eventuellement resté ouvert
     281        if($ital){
     282                $s = "}" ;
     283                //var_dump("lol",$b);
     284        }       
     285        else
     286                $s = "";       
     287       
     288        $texte = $texte_clean.$s ;
     289               
     290        //$texte = supprimer_tags($texte);
     291               
     292        // entites inventées
     293        // espace fine
     294        $texte = str_replace("&amp;flexSpace;", "~", $texte);
     295        // cesures
     296        $texte = str_replace("&amp;discHyphen;", "", $texte);
     297        // autre
     298        $texte = str_replace("&amp;punctSpace;", "~", $texte);
     299        $texte = str_replace("&amp;thinsp;", "~", $texte);
     300        $texte = str_replace("&amp;ndash;", "—", $texte);
     301        $texte = str_replace("&amp;softReturn;", " ", $texte);
     302        $texte = str_replace("&amp;nbsp;", "~", $texte);
     303        $texte = str_replace("&nbsp;", "~", $texte);
     304       
     305
     306        // espaces en gras.
     307        $texte = str_replace(" }}","}} ",$texte);
     308        $texte = str_replace("{{ "," {{",$texte);
     309
     310        // espaces en ital.
     311        $texte = str_replace(" }","} ",$texte);
     312        $texte = str_replace("{ "," {",$texte);
     313
     314       
     315        /*      // espaces en italique ou en romain
     316        $c = preg_replace(',[{] *~ *[}],', '~', $c);
     317        $c = preg_replace(',[}] *~ *[{],', '~', $c);
     318        $c = preg_replace(',[{] +[}],', ' ', $c);
     319        $c = preg_replace(',[}] +[{],', ' ', $c);
     320        $c = preg_replace(',([ ~])[}],', '}\1', $c);
     321        $c = preg_replace(',[{]([ ~]),', '\1{', $c);
     322        $c = preg_replace(',[ ~]?([{]»),', '{»', $c);
     323        $c = preg_replace(',[{][}]|[}][{],', '', $c);
     324*/     
     325
     326       
     327        return $texte ;
     328}
Note: See TracChangeset for help on using the changeset viewer.