<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)
<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)
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>",);
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 ?
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...Mais ca risque de faire beaucoup de boucle "test" (à chaque nouvelle balise) non ?
FoxLeRenard, t'as pas le même en minuscule, et avec tous les attributs autorisés de chaque balises ?
(plaisanterie bien sûr )
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..
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) !
Oui et Oui ... aux points 1 et 2
et rebonjour Doksuri et jreaux62 ...
Ah oui ...
Moi étre vieux jeune retraitéwah... FoxLeRenard... tu devais t'ennuyer ce matin au travail
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
Voici un petit exemple :
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>89xxxx</u>xxxxxxxxxx</b>xxxxxxxxx</span>xxxxxxxxxxx</p>
$nbre_caract_resume = 60; (= nombre de caractères hors balises à afficher)
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_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>
Pffffff rien compris, pourtant ça doit étre simple mais comme ton texte sont des chiffres je m'y perds
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"
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.
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.
Tu n'as pas de "> " ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part qqsdqs <u>blabla </u><span style="color:#FF0000">sdf qsdsdf </span>qsdfqsdfqsd.....
On ne peut pas se fier au "> "
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager