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. #41
    Invité
    Invité(e)
    Par défaut
    <u><i>test</u> retest n'est pas un code "valide" !

    Or (pour l'instant) on part du principe qu'on part d'un code valide (imbrications correctes des balises)

  2. #42
    FoxLeRenard
    Invité(e)
    Par défaut
    Bon les amis comme outil, de toute façon cela vous servira, voila ce qu j'avais

    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
     
     
    $array_html = array("<!-->","<A>","<ABBREV>","<ACRONYM>","<ADDRESS>",
    "<APPLET>","<AREA>","<AU>","<AUTHOR>","<B>","<BANNER>","<BASE>","<BASEFONT>",
    "<BGSOUND>","<BIG>","<BLINK>","<BLOCKQUOTE>","<BQ>","<BODY>","<BR>","<CAPTION>",
    "<CENTER>","<CITE>","<CODE>","<COL>","<COLGROUP>","<CREDIT>","<DEL>","<DFN>",
    "<DIR>","<DIV>","<DL>","<DT>","<DD>","<EM>","<EMBED>","<FIG>","<FN>","<FONT>",
    "<FORM>","<FRAME>","<FRAMESET>","<H1>","<H2>","<H3>","<H4>","<H5>","<H6>","<HEAD>",
    "<HR>","<HTML>","<I>","<IFRAME>","<IMG>","<INPUT>","<INS>","<ISINDEX>","<KBD>",
    "<LANG>","<LH>","<LI>","<LINK>","<LISTING>","<MAP>","<MARQUEE>","<MATH>","<MENU>","<META>",
    "<MULTICOL>","<NOBR>","<NOFRAMES>","<NOTE>","<OL>","<OVERLAY>","<P>","<PARAM>",
    "<PERSON>","<PLAINTEXT>","<PRE>","<Q>","<RANGE>","<SAMP>","<SCRIPT>","<SELECT>",
    "<SMALL>","<SPACER>","<SPOT>","<STRIKE>","<STRONG>","<SUB>","<SUP>","<TAB>","<TABLE>",
    "<TBODY>","<TD>","<TEXTAREA>","<TEXTFLOW>","<TFOOT>","<TH>","<THEAD>","<TITLE>",
    "<TR>","<TT>","<U>","<UL>","<VAR>","<WBR>","<XMP>",);
     
    $array_html2 = array("<!-- ","<A ","<ABBREV ","<ACRONYM ","<ADDRESS ",
    "<APPLET ","<AREA ","<AU ","<AUTHOR ","<B ","<BANNER ","<BASE ","<BASEFONT ",
    "<BGSOUND ","<BIG ","<BLINK ","<BLOCKQUOTE ","<BQ ","<BODY ","<BR ","<CAPTION ",
    "<CENTER ","<CITE ","<CODE ","<COL ","<COLGROUP ","<CREDIT ","<DEL ","<DFN ",
    "<DIR ","<DIV ","<DL ","<DT ","<DD ","<EM ","<EMBED ","<FIG ","<FN ","<FONT ",
    "<FORM ","<FRAME ","<FRAMESET ","<H1 ","<H2 ","<H3 ","<H4 ","<H5 ","<H6 ","<HEAD ",
    "<HR ","<HTML ","<I ","<IFRAME ","<IMG ","<INPUT ","<INS ","<ISINDEX ","<KBD ",
    "<LANG ","<LH ","<LI ","<LINK ","<LISTING ","<MAP ","<MARQUEE ","<MATH ","<MENU ","<META ",
    "<MULTICOL ","<NOBR ","<NOFRAMES ","<NOTE ","<OL ","<OVERLAY ","<P ","<PARAM ",
    "<PERSON ","<PLAINTEXT ","<PRE ","<Q ","<RANGE ","<SAMP ","<SCRIPT ","<SELECT ",
    "<SMALL ","<SPACER ","<SPOT ","<STRIKE ","<STRONG ","<SUB ","<SUP ","<TAB ","<TABLE ",
    "<TBODY ","<TD ","<TEXTAREA ","<TEXTFLOW ","<TFOOT ","<TH ","<THEAD ","<TITLE ",
    "<TR ","<TT ","<U ","<UL ","<VAR ","<WBR ","<XMP ",);
     
    $array_html3 = array("-->","</A>","</ABBREV>","</ACRONYM>","</ADDRESS>",
    "</APPLET>","</AREA>","</AU>","</AUTHOR>","</B>","</BANNER>","</BASE>","</BASEFONT>",
    "</BGSOUND>","</BIG>","</BLINK>","</BLOCKQUOTE>","</BQ>","</BODY>","</BR>","</CAPTION>",
    "</CENTER>","</CITE>","</CODE>","</COL>","</COLGROUP>","</CREDIT>","</DEL>","</DFN>",
    "</DIR>","</DIV>","</DL>","</DT>","</DD>","</EM>","</EMBED>","</FIG>","</FN>","</FONT>",
    "</FORM>","</FRAME>","</FRAMESET>","</H1>","</H2>","</H3>","</H4>","</H5>","</H6>","</HEAD>",
    "</HR>","</HTML>","</I>","</IFRAME>","</IMG>","</INPUT>","</INS>","</ISINDEX>","</KBD>",
    "</LANG>","</LH>","</LI>","</LINK>","</LISTING>","</MAP>","</MARQUEE>","</MATH>","</MENU>","</META>",
    "</MULTICOL>","</NOBR>","</NOFRAMES>","</NOTE>","</OL>","</OVERLAY>","</P>","</PARAM>",
    "</PERSON>","</PLAINTEXT>","</PRE>","</Q>","</RANGE>","</SAMP>","</SCRIPT>","</SELECT>",
    "</SMALL>","</SPACER>","</SPOT>","</STRIKE>","</STRONG>","</SUB>","</SUP>","</TAB>","</TABLE>",
    "</TBODY>","</TD>","</TEXTAREA>","</TEXTFLOW>","</TFOOT>","</TH>","</THEAD>","</TITLE>",
    "</TR>","</TT>","</U>","</UL>","</VAR>","</WBR>","</XMP>",);

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 476
    Points : 4 687
    Points
    4 687
    Par défaut
    wah... FoxLeRenard... tu devais t'ennuyer ce matin au travail

    => mais cela ne nous obligera-t-il pas a "forcer" les majuscules des balises pour les tests ?

  4. #44
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doksuri Voir le message
    => mais cela ne nous obligera-t-il pas a "forcer" les majuscules des balises pour les tests ?
    1- Déjà, il me semble que les balises doivent s'écrire en minuscule
    2- on peut de toute façon s'en sortir avec strtolower() ou strtoupper() !

  5. #45
    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
    Mais ca risque de faire beaucoup de boucle "test" (à chaque nouvelle balise) non ?
    Je crois pas qu'il y n'ait d'autres choix, et encore il faut que le html soit entièrement valide, c'est pour ça que dans la ptiote fonction que j'avais mise, je vérifiais et complétais en cas d'erreur...

    FoxLeRenard, t'as pas le même en minuscule, et avec tous les attributs autorisés de chaque balises ?
    (plaisanterie bien sûr )

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 476
    Points : 4 687
    Points
    4 687
    Par défaut
    oui, et tout compte fait, je crois qu'on va etre oblige de passer par la...
    on s'est tous trompe au moins 1 fois..

  7. #47
    Invité
    Invité(e)
    Par défaut
    Je pensais à un autre truc :
    On veut (par exemple) afficher 60 caractères (un "résumé" d'un texte)
    ==> il faut donc aussi compter les caractères qui ne sont PAS dans les balises !
    (pour en afficher effectivement 60 !)

    ==> ou : compter les caractères "hors balises" + ajouter au compte les caractères des balises "rencontrées en cours de route", et "couper" le textes APRES.

    J'ai l'impression que ca simplifierait une partie du problème :
    - plus de risque d'avoir une balise "tronquée" (<stro) !

  8. #48
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    1- Déjà, il me semble que les balises doivent s'écrire en minuscule
    2- on peut de toute façon s'en sortir avec strtolower() ou strtoupper() !
    Oui et Oui ... aux points 1 et 2
    et rebonjour Doksuri et jreaux62 ...

    Ah oui ...
    wah... FoxLeRenard... tu devais t'ennuyer ce matin au travail
    Moi étre vieux jeune retraité

    avec ma méthode les attribus on s'en moque, puisque vous le voyez dans l'array 2 il y a un espace donc si "<a " alors c'est bien anchore ouvert
    ALORS QUE si "<a" alors on sait pas !! parceque ça peut étre ABBREV ou
    ACRONYM .... voila pourquoi

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 476
    Points : 4 687
    Points
    4 687
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    On veut (par exemple) afficher 60 caractères (un "résumé" d'un texte)
    ==> il faut donc aussi compter les caractères qui ne sont PAS dans les balises !
    (pour en afficher effectivement 60 !)
    j'y avais pense, dans le 2eme script que je propose, il y a justement $compteur (pour le nombre de caracteres reelement affiches) et $total pour le total (le texte + les balises)

  10. #50
    Invité
    Invité(e)
    Par défaut
    Voici un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <p>012345<b>678901234<u>5678901</u>2345678<i>901234</i></b><i>567890<span style="color:#FF0000">12345</span></i><span style="color:#FF0000">678</span></p>
    <p>901<span style="color:#FF0000">2345<b>67<u>89xxxx</u>xxxxxxxxxx</b>xxxxxxxxx</span>xxxxxxxxxxx</p>
    On veut afficher les 60 premiers caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <p>012345<b>678901234<u>5678901</u>2345678<i>901234</i></b><i>567890<span style="color:#FF0000">12345</span></i><span style="color:#FF0000">678</span></p>
    <p>901<span style="color:#FF0000">2345<b>67<u>89
    $nbre_caract_resume = 60; (= nombre de caractères hors balises à afficher)
    $nbre_html = nombre de caractères des balises rencontrées "en cours de route" (tous les caracteres <......>)
    ici, on doit trouver $nbre_html = 141; (sauf erreur de comptage !)

    1 ==> les balises "ouvrantes NON fermée : <p><span style="color:#FF0000"><b><u>
    2 ==> on "coupe" la chaine html à $total = ($nbre_caracteres + $nbre_html)
    3 ==> il faut donc les fermer en ajoutant : </u></b></span></p>

  11. #51
    FoxLeRenard
    Invité(e)
    Par défaut
    Pffffff rien compris, pourtant ça doit étre simple mais comme ton texte sont des chiffres je m'y perds

  12. #52
    Invité
    Invité(e)
    Par défaut
    J'ai juste mis des chiffres 0123456789 (6 fois) pour avoir 60 caractères !
    les xxxxxxxxxxxxxxxxxxxxxxx sont les caractères "en plus" !

    Bon. Dans mon idée :
    $resume_nb_caracteres = 60; (le nombre qu'on s'est fixé pour le résumé)

    -> au départ :
    $nbre_caract = 0;
    $nbre_html = 0;

    ==> on lit la chaine, depuis le début, caractère par caractère.
    -> tant que $nbre_caract <= $resume_nb_caracteres (le nombre qu'on s'est fixé) :
    -> tant qu'on ne rencontre pas de < : on incrémente $nbre_caract
    $nbre_caract++;

    -> si on rencontre < : on incrémente $nbre_html
    $nbre_html++;
    jusqu'à trouver le > suivant
    ET on enregistre le nom de la balise rencontrée (tableau array ?)
    (on teste aussi si on rencontre / avant > pour voir si c'est une "fermante")

    (et ainsi de suite, jusqu'à avoir nos 60 caractères)

    -> on coupe alors la chaine :
    $total_coupe = $nbre_caract + $nbre_html;
    $resume = substr($chaine,0,$resume_nb_caracteres-1);
    -> Ensuite :
    on vérifie les balises "ouvertes", mais pas "fermées"
    on ajoute les "fermantes"

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 476
    Points : 4 687
    Points
    4 687
    Par défaut
    La vache .... c'est a peu pres ce que j'avais fait mais en tellement plus clair !

    cette apres-midi je n'ai pas le temps de m'y pencher, mais j'essayerais en rentrant.

  14. #54
    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
    Je viens de réaliser un truc

    Le coup d'une balise fermante tronquée en fin de texte ne peut exister, je sais pas pour vous, mais je coupe toujours la chaine sur un espace, ou autre caractère blanc, et pas au milieu d'un mot.

  15. #55
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par Xunil Voir le message
    Je viens de réaliser un truc

    Le coup d'une balise fermante tronquée en fin de texte ne peut exister, je sais pas pour vous, mais je coupe toujours la chaine sur un espace, ou autre caractère blanc, et pas au milieu d'un mot.
    Alors la tout a fait OK avec toi,

    ça simplifie donc énormément le travail,
    UN STRPOS a partir de 60 du 1er espace et HOP !! trop génial toi

  16. #56
    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

  17. #57
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Xunil Voir le message
    je coupe toujours la chaine sur un espace, ou autre
    Ok pour les "fermantes".

    Mais l'espace dans <span style="color:#FF0000"> : vous en faites quoi ?!?

    On peut très bien avoir une balise "ouvrante" tronquée avec votre système !!

  18. #58
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Et l'espace dans <span style="color:#FF0000"> : vous en faites quoi ?!?

    On peut très bien avoir une balise "ouvrante" tronquée avec votre système !!
    Oui moi j'aurais cherché "> " donc premier espace vrais derriere une fermeture,
    mais alors si la premiere fermeture est a 150 alors on peut couper au premier espace a partir de 60

  19. #59
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Oui moi j'aurais cherché "> " donc premier espace vrais derriere une fermeture,
    mais alors si la premiere fermeture est a 150 alors on peut couper au premier espace a partir de 60
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qqsdqs <u>blabla </u><span style="color:#FF0000">sdf qsdsdf </span>qsdfqsdfqsd.....
    Tu n'as pas de "> " ...

    On ne peut pas se fier au "> "

  20. #60
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qqsdqs <u>blabla </u><span style="color:#FF0000">sdf qsdsdf </span>qsdfqsdfqsd.....
    Tu n'as pas de "> " ...

    On ne peut pas se fier au "> "
    Bon alors il faut tester les deux
    "><" et "> "

+ Répondre à la discussion
Cette discussion est résolue.

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