PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Forum Général PHP » tranformation d'un fichier XML » 22-08-2010 16:24:02

thibaud74
Réponses : 0

Bonjour,

J'essaie de modifier un script php qui transforme un fichier xml en fichier wiki. Normalement je devrais pouvoir faire ça avec les expressions régulières, pas besoin de simple api for xml pour une simple conversion de fichiers. D'ailleurs le script que j'utilise fonctionne, mais pas pour les balises de puces.
Voici un exemple du fichier xml :

texte
<list>
texte
<list><list-item dir="ltr">puce de niveau 1
<list><list-item dir="ltr">puce de niveau 2
<list><list-item dir="ltr">puce de niveau 3, etc</list-item></list></list-item></list></list-item></list>
 

Le résultat wiki est composé de deux espaces par niveau de puce, puis d'une étoile. Ce qui donne avec le code précédent :

texte
  * puce de niveau 1
    * puce de niveau 2
      * puce de niveau 3, etc

Le code php que j'utilise pour l'instant est le suivant, mais ça ne prend pas les sous-niveaux (non limités) :


  $markup = preg_replace('/<list-item>(.*)<\\/list-item>/','  * $1', $markup);
 

Aussi j'obtiens un truc pas terrible en sortie :

texte
<list-item>puce de niveau 1
<list-item>puce de niveau 2
  * puce de niveau 3, etc</list-item></list-item>

Notez que je peux me contenter de n'avoir qu'un niveau 1 pour tous les items...
Il faut probablement que je fasse une boucle plutôt ? En fait il s'agit probablement de ce que faitce script que j'essaie de comprendre, lequel ajoute ces lignes :

     // one last thing: if it is not a hX, we need a "\\ " for creating newlines at each line
 
     $lines = explode("\n", $markup);
 
     for($i=0; $i<count($lines); $i++) {
          $lines[$i] = preg_replace('/^\\* (.*)$/','  * $1', $lines[$i]);
          $lines[$i] = preg_replace('/^\\*\\* (.*)$/','    * $1', $lines[$i]);
     }    
 
     $markup = implode("\n", $lines);

Encore faut-il savoir ce qu'est qu'un hX ?

Merci de l'aide,
Thibaud.

Pied de page des forums

Propulsé par FluxBB