Discussion:
PHP et TIDY mais surout TIDY
(trop ancien pour répondre)
Etienne SOBOLE
2007-09-04 11:30:38 UTC
Permalink
Salut j'utilise tidy pour remettre en forme des pages HTML,
mon tableau de conf est celui-ci

$tidy_config = array(
'char-encoding' => 'utf8',
'input-encoding' => 'utf8',
'output-encoding' => 'utf8',
'output-xhtml' => TRUE,
'ident' => true,
'wrap' => 0
);


la problème est que lorsque j'ai un caractère accentué (par exemple) tidy
s'attend a le trouver en utf8 (ce qui est normal vu que ma page est en utf8)
sauf que parfois le caractère accentue est escapé en HTML ´ par
exemple et la rien ne va plus !
tidy n'arrive pas a remplacer ce caractère escapé par son equivalent UTF8 et
me renvoit un fichier plus ou moins foireux qui au final ne passe pas dans
un parser XML du php.

Quelqu'un a une idée, sauf a coder moi meme la fonction qui decode les
caractère escapé...
pour info, je ne peux évidement pas utiliser la fonction html_entity_decode
qui va aussi me decoder les caractère & !!!

Etienne
Olivier Miakinen
2007-09-04 13:17:06 UTC
Permalink
[le] problème est que lorsque j'ai un caractère accentué (par exemple) tidy
s'attend a le trouver en utf8 (ce qui est normal vu que ma page est en utf8)
sauf que parfois le caractère accentue est escapé en HTML ´ par
exemple et la rien ne va plus !
[...]
pour info, je ne peux évidement pas utiliser la fonction html_entity_decode
qui va aussi me decoder les caractère & !!!
Sauf erreur, il te suffit d'appeler en séquence html_entity_decode et
htmlspecialchars, dans un sens ou dans l'autre, pour décoder les
caractères accentués mais pas les caractères spéciaux.
Etienne SOBOLE
2007-09-05 10:39:46 UTC
Permalink
Post by Olivier Miakinen
Sauf erreur, il te suffit d'appeler en séquence html_entity_decode et
htmlspecialchars, dans un sens ou dans l'autre, pour décoder les
caractères accentués mais pas les caractères spéciaux.
Hum ben non.
si tu html_entity_decode tu vas transformer les $lt; en <
et la c'est fouttu !!!

nan ben en fait je codé la fonction a la main...
ca marche pas trop mal.

tidy c'est bien, mais c'est pas non plus parfait !!!
j'ai trouvé un site ou le gars avait mis une balide <script>
il ne l'as pas fermé et derriere il a mis une balide <meta>

et ben les navigateurs vont ignorr la balise <script> alors que tidy va
encoder byzarrement d'ailleurs tout ce qu'il y a derriere la balise <script>

Bon voila.
ca reste quand meme un oulit sympa :)

a+
Etienne
Olivier Miakinen
2007-09-06 10:33:50 UTC
Permalink
Post by Etienne SOBOLE
Hum ben non.
si tu html_entity_decode tu vas transformer les $lt; en <
et là c'est foutu !!!
Les « &lt; », je suppose. Mais tu as raison, ça ne marche pas.
Post by Etienne SOBOLE
nan ben en fait j'ai codé la fonction a la main...
ca marche pas trop mal.
Ok.
Post by Etienne SOBOLE
tidy c'est bien, mais c'est pas non plus parfait !!!
j'ai trouvé un site où le gars avait mis une balise <script>
il ne l'as pas fermée et derrière il a mis une balise <meta>
eh ben les navigateurs vont ignorer la balise <script> alors que tidy va
encoder bizarrement d'ailleurs tout ce qu'il y a derrière la balise <script>
Comme on dit, « Garbage In, Garbage Out ». Je ne vois pas pourquoi
tous les navigateurs réagiraient comme tu le dis à ce code incorrect.
Certains pourraient parfaitement faire comme tidy, et interpréter
bizarrement tout ce qui (selon eux) se trouve dans un élément script.
Etienne SOBOLE
2007-09-06 13:32:51 UTC
Permalink
Post by Olivier Miakinen
Comme on dit, « Garbage In, Garbage Out ». Je ne vois pas pourquoi
tous les navigateurs réagiraient comme tu le dis à ce code incorrect.
Certains pourraient parfaitement faire comme tidy, et interpréter
bizarrement tout ce qui (selon eux) se trouve dans un élément script.
Ah oui, il pourrait, mais ca semble pas être le cas.
enfin bon pas tres grave.
ca ne touche que tres peu de pages, qui passent donc a la trappe d'une
remise en forme !!!

Etienne
Olivier Miakinen
2007-09-06 14:19:46 UTC
Permalink
Post by Olivier Miakinen
Post by Etienne SOBOLE
Hum ben non.
si tu html_entity_decode tu vas transformer les $lt; en <
et là c'est foutu !!!
Les « &lt; », je suppose. Mais tu as raison, ça ne marche pas.
Finalement... en y re-re-re-réfléchissant... bien sûr, ça ne marche pas
si tu commences par htmlspecialchars avant de faire html_entity_decode
parce que &lt; va devenir &amp;lt; avant de redevenir &lt;, mais qu'il
en sera de même de &eacute;.

Mais si tu fais l'inverse ? En principe tu devrais avoir :
&lt; ==> < ==> &lt;
&eacute; ==> é ==> é

Je me trompe ?
Etienne SOBOLE
2007-09-07 07:51:29 UTC
Permalink
Post by Olivier Miakinen
&lt; ==> < ==> &lt;
&eacute; ==> é ==> é
Je me trompe ?
Oui tu te trompes.

car <b>titre</b>
va devenir &lt;b&gt;titre&lt;/b&gt;
et c'est pas trop le but ;)

Etienne
Olivier Miakinen
2007-09-07 10:39:10 UTC
Permalink
Post by Etienne SOBOLE
Post by Olivier Miakinen
Je me trompe ?
Oui tu te trompes.
car <b>titre</b>
et c'est pas trop le but ;)
Ah, en effet. C'est sans espoir, donc, sauf à faire ce que tu as
fait (une fonction codée à la main).

Désolé.

Continuer la lecture sur narkive:
Loading...