Forum général.cherche-logiciel découper un fichier html en petits fichiers

Posté par  .
Étiquettes : aucune
0
16
juin
2009
bonjour,

j'ai un fichier xhtml structuré (avec différents entêtes h2 etc) et je souhaiterais le découper en fichiers plus petits, en faisant automatiquement le lien vers les sous fichiers dans un index.

Il existe un logiciel pour faire cela :

http://www.htmldoc.org/

Malheureusement, déjà il converti tout le code en vieux html, et ensuite il rajoute dans chaque fichier un petit menu avec le lien vers le fichier suivant et précédent, ce que je ne souhaite pas. Je n'ai pas trouvé comment le désactiver, cela ne semble pas avoir été envisagé.

Auriez-vous un logiciel similaire mais plus récent et qui ferait tout cela ?
  • # Une bonne vieille regexp ?

    Posté par  . Évalué à 2.

    Genre tu découpes ton fichier en fonction des "h2" trouvées, tout simplement.

    Je te donne un exemple simple en php parce que c'est ce que j'ai en tête à cette heure tardive, mais c'est faisable en ce que tu veux selon le même principe (le code par le lui même, je pense) :


    $page = file_get_contents('ton gros fichier.xhtml');
    // ici nettoyage du code pour ne garder que ce qui est entre les balises "body"
    preg_match_all('#<h([2])[^>]{0,}>(.*)</h\1>#i',$page,$match);
    $match = $match[0];
    $summary = array();
    foreach ($match as $m) {
    $page = str_replace($m,'<!-- cut here -->'.$m,$theContent); // on place un marqueur de découpe
    $summary[] = striptags($m); // on stocke les titres pour créer une page index
    }
    $page = explode('<!-- cut here -->',$page');
    foreach ($page as $num=>$chunk) {
    file_put_contents($num.'.html',$chunk);
    }
    $index = '';
    foreach ($summary as $num=>$entry) {
    $index.='$entry'
    }
    $index = ''.$index.'';
    file_put_contents('index.html',$index);

    après on peut compliquer un peu plus pour formater correctement chaque fichier créé (ajouter une dtd, un head etc..)

    en espérant que ça te donne une piste...
    • [^] # Re: Une bonne vieille regexp ?

      Posté par  . Évalué à 5.

      euh je viens de me relire, et le parseur de dlfp a pas aimé le code apparemment vla un pastebin http://pastebin.com/f6bc4b823
      • [^] # Re: Une bonne vieille regexp ?

        Posté par  . Évalué à 2.

        merci quand même, mais cela ne fonctionne pas.

        J'ai essayé de corriger les premières coquilles, mais alors que le code paraît correct, il me dit Parse error: syntax error, unexpected '}' :

        http://pastebin.com/m487411a4

        Au pire des cas si je ne trouve pas, je peux utiliser des fichiers sources multiples qui produiront plusieurs fichiers html, mais cela me plait moins.

        Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

        • [^] # Re: Une bonne vieille regexp ?

          Posté par  . Évalué à 3.

          apparemment il manquait le ; de fin de ligne à la 19 ça devrait être bon maintenant http://pastebin.com/f4816802c

          désolé pour les coquilles : j'ai pondu ça en live à la va vite sur mon P1i...
          • [^] # Re: Une bonne vieille regexp ?

            Posté par  . Évalué à 2.

            merci, je n'avais pas vu le ; qui manquait...

            Maintenant cela fait des choses, mais c'est pas encore ça : si j'ai un fichier html avec des h2, cela ne genère qu'un fichier 0.html (vide), si je passe en export docbook, les <!--cut here--> fonctionnent bien, mais le fichier d'index n'est pas correctement généré.

            Merci quand même pour cet effort :)

            Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

            • [^] # Re: Une bonne vieille regexp ?

              Posté par  . Évalué à 2.

              Bon, vais m'y pencher plus sérieusement et te pondre un truc au poil, ça va me servir aussi de toutes manières et certainement à d'autres ici ou ailleurs...
              • [^] # Re: Une bonne vieille regexp ?

                Posté par  . Évalué à 3.

                Voilà une version qui fonctionne
                http://pastebin.com/f679f5bac

                le fichier se trouve dans ./source et le résultat dans ./result (le fichier php dans ./ évidement)

                voila :)
                • [^] # Re: Une bonne vieille regexp ?

                  Posté par  . Évalué à 2.

                  cela m'a l'air de plutôt bien fonctionner. Félicitation et merci.

                  Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

                  • [^] # Re: Une bonne vieille regexp ?

                    Posté par  . Évalué à 2.

                    vala, avec ça tu peux vraiment faire ce que tu veux :
                    - ça ne prends que le contenu du body
                    - ça insère dans les chapitre les headers/footers/barres de navigation
                    - ça insère à la fin de l'index le sommaire avec un lien vers chaque chapitre

                    http://pastebin.com/fe6ec5f0

                    ça m'a fait plaisir et puis ça servira certainement à d'autres :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.