Retourner aux forums || Retourner au forum

general.cherche-logiciel : découper un fichier html en petits fichiers

Posté par farvardin () le 16 juin 2009
0
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 ?

--
If you can't use GNU/Debian GNU/Linux, you shouldn't be using GNU/Linux at GNU/all.
> Lire le message (9 commentaires, moyenne: 2,6).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Une bonne vieille regexp ?

Posté par Jeff_ (Jabber id, ) le 16/06/2009 à 01:40. (lien). É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...

--
“Commit du soir, espoir.
Build du matin, chagrin.”
  • [^]Re: Une bonne vieille regexp ?

    Posté par Jeff_ (Jabber id, ) le 16/06/2009 à 03:00. (lien). É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

    --
    “Commit du soir, espoir.
    Build du matin, chagrin.”
    • [^]Re: Une bonne vieille regexp ?

      Posté par farvardin () le 16/06/2009 à 22:12. (lien). É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.

      --
      If you can't use GNU/Debian GNU/Linux, you shouldn't be using GNU/Linux at GNU/all.
      • [^]Re: Une bonne vieille regexp ?

        Posté par Jeff_ (Jabber id, ) le 17/06/2009 à 01:20. (lien). É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...

        --
        “Commit du soir, espoir.
        Build du matin, chagrin.”
        • [^]Re: Une bonne vieille regexp ?

          Posté par farvardin () le 17/06/2009 à 20:20. (lien). É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 :)

          --
          If you can't use GNU/Debian GNU/Linux, you shouldn't be using GNU/Linux at GNU/all.
          • [^]Re: Une bonne vieille regexp ?

            Posté par Jeff_ (Jabber id, ) le 17/06/2009 à 21:24. (lien). É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...

            --
            “Commit du soir, espoir.
            Build du matin, chagrin.”
            • [^]Re: Une bonne vieille regexp ?

              Posté par Jeff_ (Jabber id, ) le 20/06/2009 à 00:16. (lien). É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 :)

              --
              “Commit du soir, espoir.
              Build du matin, chagrin.”
              • [^]Re: Une bonne vieille regexp ?

                Posté par farvardin () le 20/06/2009 à 00:52. (lien). Évalué à 2.

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

                --
                If you can't use GNU/Debian GNU/Linux, you shouldn't be using GNU/Linux at GNU/all.
                • [^]Re: Une bonne vieille regexp ?

                  Posté par Jeff_ (Jabber id, ) le 20/06/2009 à 01:41. (lien). É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 :)

                  --
                  “Commit du soir, espoir.
                  Build du matin, chagrin.”

Revenir en haut de page || Retourner aux forums || Retourner au forum