IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez / Téléchargez Sources et Outils PHP Discussion :

[discussion] Réparer du code HTML


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #21
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    merci de ces precisions jreaux62 ... j'avais compris de travers et du coup, je suis partis totalement a l'ouest...
    FoxLeRenard a eu du mal a m'explique... mais maintenant, je suis repartis de plus belle =)

    ps : on part sur une base d'un fichier ? une BDD ? (ou autre) ?
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  2. #22
    Invité
    Invité(e)
    Par défaut
    Doksuri, merci en tout cas pour ton intérêt pour ce sujet
    (on ne t'oubliera pas pour le "Prix Nobel" !)
    Tu n'as pas "compris de travers" mais ..."Ne mettons pas la charrue avant les bœufs" !

    Partons déjà de mon exemple "simple" (message précédent)
    ==> 3 cas de figure !
    Pourtant, l'"exemple de base" semble simple ! La solution peut s'avérer déjà assez complexe ...

    tentons déjà de résoudre cette "simple" problématique, ok ?

    [EDIT] Tout l'interêt de DVP est de pouvoir réunir des "compétences" dans différents domaines (méthodologie, programmation et connaissance de fonctions existantes PHP, regex, ...)
    Perso, je n'en connais qu'un petit bout !
    Ensemble ... A NOUS LE PRIX NOBEL !!!!!!
    Bon. J'exagère avec le "Prix Nobel".
    Par contre, je suis convaincu que cela peut amener à une fonction (ou class, ou peu importe) qui en intéresserait plus d'un !


    Ps : tous mes "tutos" ou "sources" sont "open" : j'œuvre avant tout pour la "communauté" !
    (mais je suis content d'avoir ouvert cette "discussion" !)

  3. #23
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Pour des balises simples, cela reste facilement faisable, expression rationnelles oblige.

    Je viens de faire ça vite fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    $texte = '<p>il était une <strong><em><u>fois</strong>, un marchand de <strong>foi</strong> qui vendait du <strong>foie</s';
     
    function extraitTexte($texte)
    {
       // Récup de tous les tags
       if( !preg_match_all('#</?([a-z]+)>#', $texte, $r, PREG_OFFSET_CAPTURE) )
          return $texte;
       // Suppression éventuelle d'un tag fermant en fin de texte
       $texte = preg_replace('#</?[a-z]*$#', '', $texte);
       $tab = array();
       $decalage = 0;
       foreach( $r[1] as $k => $tag )
       {
          // Si tag non fermant
          if( $r[0][$k][0][1] != '/' )
             array_unshift($tab, $tag[0]);
          else
          {
             // Erreur de fermeture
             if( isset($tab[0]) && $tab[0] != $tag[0] )
             {
                $close = null;
                while( $tab[0] != $tag[0] )
                {
                   $close .= '</' . $tab[0] . '>';
                   array_shift($tab);                          
                }
                // Position du tag fermant
                $pos = $r[0][$k][1] + $decalage;
                // Remplacement (ajout du tag fermant manquant)
                $texte = substr_replace($texte, $close . $r[0][$k][0], $pos, strlen($r[0][$k][0]));
                // Incrément du décalage
                $decalage +=  strlen($close);
             }
             // Suppression du tag ouvrant
             unset($tab[0]);
          }
       }
       // Il reste des tags à fermer ?
       if( !empty($tab) )
          foreach( $tab as $tag )
             $texte .= '</' . $tag . '>';
       return $texte;
    }
     
    echo extraitTexte($texte);
    Je n'ai géré que les balises ouvrantes sans les fermantes, le contraire n'étant pas encore testé dans la fonction

  4. #24
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    Ah flute... tu m'as pris de court...
    j'ai moi aussi fais un petit quelque chose... mais je ne sais pas si c'est vraiment optimise (ou mieux que ce qu'a fait Xunil)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    //index.php
    <HTML>
     <HEAD>
      <TITLE>Resume</TITLE>
     </HEAD>
     <BODY bgcolor="#COCOCO">
    <?php
     
    require_once("functions.php");
     
    echo 'blabla<br />'.overview("osef",20);//on peut changer le nombre de caracteres a afficher
     
    ?>
     </BODY>
    </HTML>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    //functions.php
    <?php
     
    function overview($file,$nb=60,$forced=1)
    {
    /*
    $file correspond au fichier dont on souhaite afficher le resume
    $nb correspond au nombre de mots qu l'on souhate afficher
            si non renseigne, 60 caracteres par defaut, si 0, 60 caracteres aussi pour pas que le $forced se retrouve dans le $nb
    $forced si 1, alor on force la coupure a $nb caracteres
            si 0, alors on tolere la fin de la phrase.
    ---------------------
    je les ai juste prevu pour plus tard
    */
            if($nb==0)
                    $nb=60;
     
    $texte='1111111111<u>2222222222</u>3333333333<u>4444444444</u><br />';
    $texte.='5555555555<u>6666666666</u>7777777777<br />';
     
            $temp=$texte;//on place le texte dans une variable que l'on modifiera par la suite
            $compteur=0;//compteur du nombre de caracteres affiches
            $total=0;//nombre total de caractere a afficher
            while($compteur<=$nb)
            {
                    $max=strlen($temp);//valeure du texte en cours
    //rechercher la position du < de la 1ere balise (donc celle qui ouvre)
                    $posopen1=strpos($temp,"<");
    //trouver la fin de la balise
                    $posopen2=strpos($temp,">");
    //longueure de la balise ouvrante
                    $long=$posopen2-$posopen1+1;
    //        $openbal=substr($temp,$posopen1,$long);//nom de la balise complete
    //incrementation du compteur : compteur + position de la fin de balise - longeure de la balise
                    $intermediaire=$posopen2-$long+1;
    //si on depasse le compeur, on force l'arret
                    if($compteur+$intermediaire>$nb)
                            break;
                    $compteur+=$intermediaire;
                    $total+=$posopen2+1;
                    $temp=substr($texte,$total,$max-$intermediaire);
            }
            $resum=substr($texte,0,$total);
            return $resum;
    }
     
    ?>
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  5. #25
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Le problème en utilisant strpos comme tu as fait, c'est que ça va foirer si on utilise < ou > dans le contenu, genre <b> a > b et b < c</b>.

  6. #26
    Membre émérite Avatar de HiRoN
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 035
    Points : 2 589
    Points
    2 589
    Par défaut
    Bonsoir,
    Bonne initiative que cette contribution

    Ne serais-t-il pas judicieux (mais plus tard), de faire les traitement en fonction du DocType détecté sur la page (HTML, XHTML : donc balises en majuscules ou minuscules), du type (Transitionnal, Strict : afin de supprimer / modifier certaines choses en fonction (balises obsolètes & co)), voir détecter l'absence de Doctype et tenter de "découvrir" le Doctype le plus approprié en fonction (présence de frame ou pas etc...) ?

    Je tenterai d'apporter ma pierre à l'édifice dès que j'ai un moment
    Pensez à utiliser les ressources disponibles en Dev. Web :
    (x)HTML : Cours (X)HTML / FAQ (X)HTML
    CSS : Cours CSS / FAQ CSS / Galerie CSS
    Javascript : Cours / FAQ / Sources
    Mon site : Développeur Web Freelance

  7. #27
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Hum, le but c'est de refaire un tidy sauce php ou de faire un truc qui rendra valide le début d'un texte contenant des balises html tronqué avec substr ?

  8. #28
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Xunil Voir le message
    Hum, le but c'est de refaire un tidy sauce php ou de faire un truc qui rendra valide le début d'un texte contenant des balises html tronqué avec substr ?
    Bonjour à tous,
    Si je puis me permettre de faire mon rabat-joie, bien que le sujet soit intéressant : il me semble que le but est tout simplement de réparer un texte html coupé.
    Autrement dit, il s'agit d'appareiller correctement des balises HTML.

    Lorsque cette fonctionnalité sera trouvée, le reste (couper à une certaine longueur, choisir les balises et leur contenu à virer, etc...) ne sera que roupie de sansonnet

    Mais je ne minimise pas la tâche : l'appareillage est un des sujets qui fait le plus parler des regex sur le web.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  9. #29
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Hypothèse de départ : on part d'un code "propre" (valide : pas d'erreur dans le code)

    Partons de ca (la forme la plus "simple" possible) : 1 seule balise ouvrante-fermante,
    QUELLE QUE SOIT CETTE BALISE : <strong>...</strong>, <u>...</u>, <i>...</i>, ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sdfg sdfgsdg  <strong>qsdf qsdfqsdf qgsd hdfdf</strong> qsdgfqsdsd
    La "coupe" donnerait :
    Cas 1 => la balise fermante n'y est plus ==> il faut :
    -> la fermer (la balise !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sdfg sdfgsdg  <strong>qsdf qsdfqsdf qg
    Cas 2 => la balise fermante est "tronquée" ==> il faut :
    -> soit la "reconstruire",
    -> soit supprimer l'ouvrante et le "bout de fermante".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sdfg sdfgsdg  <strong>qsdf qsdfqsdf qgsd hdfdf</stro
    ou
    sdfg sdfgsdg  <strong>qsdf qsdfqsdf qgsd hdfdf<
    Cas 3 => c'est la balise ouvrante qui est "tronquée" ==> il faut :
    -> la supprimerCa devrait être un bon début, je pense !
    Ps : étant moi-même peu (pas du tout) doué en regex ... je m'en remets à vous ...

    Moi je ne crois pas pour cela au REGEX .. car j'ais traité un truc un peut comme cela et la solution était des
    strpos
    str_replace et bien sur str_ireplace
    etc ...

    d'autre part ton analyse est bien mais ce qui complique est ce point
    Quand une balyse est a l'endroit de la coupure, rien ne dit que la précédente soit son ouverture !

    Donc il faut de toute façon, sachant que nous partons bien d'un début de page , faire l'inventaire et le comptage c'est pas long pour 60 caractéres

    Donc de toute façon il faudrait commencer par un strpos de "<"

  10. #30
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Meuh non

    L'utilisation de strpos n'est pas possible, à moins d'interdire tous caractères de chevrons dans le texte.

    L'utilisation d'expressions rationnelles se révèle incontournable.

  11. #31
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Quand une balise est a l'endroit de la coupure, rien ne dit que la précédente soit son ouverture !
    Oui, c'est juste. dans des cas simple comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sdfgsdfg <strong>sdf <u>sdgtr</u> er qsdfqsf </st
    C'est pour cette raison qu'il faut pouvoir tester en fonction du "nom" de la balise : "<u>" est bien fermé, mais pas "<strong>"

    Je rappelle qu'on démarre d'un EXEMPLE SIMPLE !

    1 ===> DEJA : comment récupérer le "nom" d'une balise ?
    a- exemple de balise ouvrante :
    $chaine = sdqf fsqd <span class="blabla" style="truc:machin;">qqsdfsdf sdfq
    ==> objectif : on veut récupérer "span" :
    - arriver au "<" on "prend" ce qui se trouve avant le ">" suivant
    $balisebrute = ....(là, je ne sais pas trop ???)
    ==> on obtient span class="blabla" style="truc:machin;"
    - on récupère le 1er élément (avec un explode avec "espace" comme séparateur)
    $balisetab = explode(' ',$balisebrute);
    $balise = $balisetab[0];
    ==> on obtient en fin : span
    b- pour les balises fermantes : même technique
    ==> on obtient en fin : /span
    Il suffit donc de vérifier si on a un "/" pour en conclure que c'est une balise fermante.

    2 ===> faut-il ensuite :
    - parcourir le "bout de code" depuis le début est répertorier les différentes balises rencontrées ? (dans un array ??)
    (Question subsidiaire : -> doit-on répertorier TOUS les noms des balises existantes en html ??)
    - et vérifier si les paires "ouvrantes-fermantes" sont respectées ?
    - valider les paires OK, trouver celles pasOK (ouvrantes, mais pas fermantes)
    - ...

  12. #32
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Xunil Voir le message
    Meuh non

    L'utilisation de strpos n'est pas possible, à moins d'interdire tous caractères de chevrons dans le texte.

    L'utilisation d'expressions rationnelles se révèle incontournable.
    Pour moi, on va ensuite chercher
    1) la position du premier suivant ">" de la balise
    2) la position du premier " "
    3) trouver la balise en utilisant pas la fermeture par exemple <div

    NOTA il existe 108 balises donc c'est pas compliqué avec un array

  13. #33
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    il me vient une idee...
    faire un array a 3 dimentions (sans compter le compteur):
    quand on tombe sur une balise ouvrante, on l'inscrit, et on inscrit direct (sans meme savoir si elle est fermee plus tard) la balise fermante correspondante.
    et la 3eme dimention serait boolenne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sdfgsdfg <strong>sdf <u>sdgtr</u> er qsdfqsf </st
    l'array ressemblerait a ca :
    [0][<strong>][</strong>][1]
    [1][<u>].......[</u>]......[0]
    [2][<etc...>]

    la derniere colonne representant la balise fermante trouvee ou non (1 ou 0)
    ainsi, a la fin... on n'aurait plus qu'a parcourir l'array et d'y inscrire les balises fermantes quand != 0

    je sais pas si je me suis bien exprime
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  14. #34
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    2 ===> faut-il ensuite :
    - parcourir le "bout de code" depuis le début est répertorier les différentes balises rencontrées ? (dans un array ??).
    Indispensable, d'après moi.

    Citation Envoyé par FoxLeRenard Voir le message
    Pour moi, on va ensuite chercher
    1) la position du premier suivant ">" de la balise
    2) la position du premier " "
    3) trouver la balise en utilisant pas la fermeture par exemple <div

    NOTA il existe 108 balises donc c'est pas compliqué avec un array
    Moué, je suis sceptique, mais piste à explorer pourquoi pas, mais cela risque de se compliquer si les attributs sont autorisés dans le html.

  15. #35
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doksuri Voir le message
    faire un array a 3 dimensions
    J'avais aussi pensé à un truc de ce genre.
    -> true (ou 1) si la balise fermante est trouvée
    -> false (ou 0) si elle n'est pas trouvée
    Mais comment associer les 2 balises ? (et mettre true ou false ?)

  16. #36
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Xunil Voir le message
    Moué, je suis sceptique, mais piste à explorer pourquoi pas, mais cela risque de se compliquer si les attributs sont autorisés dans le html.
    non puisque je cherches "<a " mais tu as raison pas simple

  17. #37
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Mais comment associer les 2 balises ? (et mettre true ou false ?)
    bah faire comme on comptait faire... quand on trouve une balise strpos, regexp...(comme on veut), si celle ci n'est pas fermante (pas de slash) on l'inscrit comme nouvelle ligne dans l'array et on y incrit tout de suite la fermante

    par exemple, on tombe sur <u> => pas de slash, donc on l'inscrit. et on connait tout de suite sa fermante (la meme avec le slash)..et on met false (ou 0) car sa fermante n'est pas trouvee
    => [$i][<u>][</u>][0]
    $i++
    puis, on continu... on tombe sur <i>... pas de slash, on inscrit
    => [$i][<i>][</i>][0]
    $i++
    puis, on tombe sur </u>... on seek dans l'array deja la ou c'est false (ou 0) puis la balise en soit [</u>].. on l'a trouvee, on passe a true.

    on se retrouve avec
    [$i][<u>][</u>][1]
    [$i][<i>][</i>][0]
    (avec $i qui est incremente hein xD)

    et a la fin, partout ou c'est flase, on affiche les fermantes

    ps : j'ai mis un compteur comme colonne de reference, ca il peut y avoir plusieurs fois la meme balise
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  18. #38
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Pourquoi un true ou false ?

    Si ouvrant on ajoute au tableau.
    Si fermant concordant au dernier ajout, on supprime le dernier enregistrement.

    Une fois tout effectué, on regarde le tableau, si non vide, on complète la chaine avec les éléments restants dans le tableau.

    je trouve que c'est plus simple non ?

  19. #39
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Xunil Voir le message
    Si ouvrant on ajoute au tableau.
    Si fermant concordant au dernier ajout, on supprime le dernier enregistrement.
    Une fois tout effectué, on regarde le tableau, si non vide, on complète la chaine avec les éléments restants dans le tableau.
    Ca parait judicieux, en effet.

    Mais ca risque de faire beaucoup de boucle "test" (à chaque nouvelle balise) non ?

  20. #40
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    edit : desole, j'avais mal lu

    sinon... on peut faire la meme chose avec l'histoire des true & false... suffit de lire le tableau a l'envers pour gagner du temps =)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 7 PremièrePremière 123456 ... DernièreDernière

Discussions similaires

  1. Insertion code html dans bdd
    Par jeff37 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/04/2004, 15h03
  2. code html en ram -> TWebBrowser pour affichage
    Par FredericB dans le forum C++Builder
    Réponses: 2
    Dernier message: 22/04/2003, 22h55
  3. Récupérer le code HTML d'une page avec Delphi 7
    Par PsyKroPack dans le forum Web & réseau
    Réponses: 5
    Dernier message: 06/02/2003, 21h56
  4. Générer du code HTML
    Par patpst dans le forum C++Builder
    Réponses: 4
    Dernier message: 27/11/2002, 10h27
  5. composant builder4 pour afficher du code html
    Par BranRuz dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/09/2002, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo