5568 sujets

Sémantique web et HTML

Pages :
Bonjour,

je suis en train de valider et donc corriger mon site en xhtml 1.0. J'ai une page php qui me renvoie les infos de ma table. Cette table contient en fait des annonces que l'on m'envoie sur fichier word et que j'insère en copier-coller.

J'ai l'impression que les carctères copier-collés dans word me créent donc cette erreur dans le validateur non SGML character Smiley fache .

Existe t il une fonction php type qui me premettrait de renvoyer du texte propre ? Merci d'avance.
oui, on a les correspondances sur le lien donné mais je ne vais pas m'amuser à chaque saisie à repérer les caractères spéciaux et taper le code. Je vais voir genre si on enregistre le fichier word en unicode et que l'on insère (un peu comme pour flash) si ça marche.
Y'a des chances que ton probmème soit le résultat du copier collé d'un texte venant de word vers xhtml. Fais un test en passant par un fichier RTF et ouvre le sous wordpad afin de faire ton copier collé d'ici.
Change l'encodage de ta page. Par exemple si l'encodage est ANSI, mets :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />


Si c'est UTF-8, mets :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Ce qui arrive, bien souvent, c'est que les apostrophes de word sont inconnues ar les navigateurs.
Et de fait, si tu fais attention, Word t'affiche (lorsque tu appuies sur la touche 4 pour faire une apostrophe) une belle apostrophe courbe.
Ouvre maintenant un fichier txt et fait une apostrophe, tu obtiens un vulgaire "bâton" vertical.

Autrement dit, Word converti les apostrophe "standard" en un caractère dont je n'ai pas réussi à trouver le code héxadécimal.

Et c'est ce qui bloque le validator.

Pour ma part en tout cas, c'est ce que j'ai eu à faire : faire un "remplacer par" pour toutes les apostrophes depuis un fichier txt avant d'enregistrer mes contenus en Base de données.

Tu me diras si ça marche mieux.

PS : bien que c'est l'apostrophe qui fait bloquer le validator, ce dernier affiche parfois que le caractère qui va pas est une autre lettre, un 'f', un 'c', je sais pas trop pourquoi mais c'est dû à une postrophe qui se trouve un peu avant ou après.

NB : c'est en tout cas le cas sur le projet que je suis en train de faire en ce moment même. Maintenant, cela vient peut être d'autre part !
chben a écrit :

Autrement dit, Word converti les apostrophe "standard" en un caractère dont je n'ai pas réussi à trouver le code héxadécimal.

L'entité est &*rsquo; (sans l'astérisque) Smiley cligne

<edit />
Ce que tu appelles une « apostrophe standard » est en réalité un guillemet simple.
Modifié par Stephan (31 Mar 2005 - 11:28)
Oui, autant pour moi, j'ai appelé apostrophe "standard" une simple quote.
d'où les guillemets qui encadraient "standard"...

bref...
est-ce que ça a résolu le problème ? là est la question !
chben a écrit :

bref...
est-ce que ça a résolu le problème ? là est la question !

Là est la question ! Smiley lol
Pour infos, je suis toujours à la recherche d'une fonction php capable de faire le boulot de remplacement des caractères à ma place.
Euh pour répondre à chben, pour l'instant je fais un dump de ma base de données dans un fichier texte et remplace les caractères invalides par leurs équivalents valides puis je réinsère le tout.
bon, comme y avait pas ce que je cherchais j'ai fait une fonction php pour convertir automatiquement les caractères invalides. J'suis pas une star en php alors ça vaut ce que ça vaut, mais ça fonctionne. Et comme je suis partageur je vous file même le code :

<?php


//transformation des caracteres invalides de word en caracteres valides SGML

$sgml_carte = array(

"‚" => "‚",
"ƒ" => "ƒ",
"„" => "„",
"…" => "…",
"†" => "†",
"‡" => "‡",
"ˆ" => "ˆ",
"‰" => "‰",
"Š" => "Š",
"‹" => "‹",
"Œ" => "Œ",
"‘" => "‘",
"’" => "’",
"“" => "“",
"”" => "”",
"•" => "•",
"–" => "–",
"—" => "—",
"˜" => "’",
"™" => "™",
"š" => "š",
"›" => "›",
"œ" => "œ",
"Ÿ" => "Ÿ"

);

function sgmlconverter($str) {
global $sgml_carte;
return strtr(html_entity_decode($str), $sgml_carte);
}

?>

Smiley lol Smiley lol Smiley lol
Ben, ça a pas marché ça a retranscrit le html dans mon post. Bon, ben j'arrive pas à trouver où on désactive le html.

Smiley turok Par contre j'ai trouvé un smiley bien délire...
Bonjour, moi j'ai un truc marrant également, le parser XHTML ne me valide pas certains caractères...

mais voyez vous-même :



Line 84, column 432: non SGML character number 146

...aux portes. Allez chercher les armes [b]d[/b]e vos amis à l&#146;étage au-dessus aprè



Sisi, vous avez bien vu, c'est pas un caractère spécial mais bien un "d" qui foire.

Pour plus d'info, regardez le validateur vous-même :

http://validator.w3.org/check?uri=http%3A%2F%2Fwww.final-fantasy.ch%2Fnewdesign%2FFf8%2Fff8soluce2.php
J'ai résolu le problèmes des codes spéciaux créés par Word par :

<meta http-equiv="content-type" content="text/html; codepage="1252" />


en lieu et place de

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />


Ça fonctionne sans aucun problèmes Smiley cligne
J'ai finalement résolu mon problème.

Le parser de vérification XHTML ne me soulignait pas le texte à l'endroit de l'erreur mais une dizaine de caractères avant. Evidemment j'ai mis un moment à comprendre.

Mais c'était bien des caractères windows mal encodés.


Merci

++
Merci a toutes ces infos, ce problème vient de m'arriver et j'avais du mal a saisir ce que venait faire cette erreur qui n'arrivait que lorsque je changeais l'encodage...

Le problème c'est que si je mets UTF-8 mon lien vers Valid CSS ne fonctionne pas (j'ai une grosse erreur qui me dit de valider mon doc xml avant) et en iso-8859-1 ca fait des caractères vilains et donc du xhtml pas valide (mais un Valid CSS! qui peut etre vu) ... quel dilemme

Merci a tous.
cheucher50 a écrit :
Pour infos, je suis toujours à la recherche d'une fonction php capable de faire le boulot de remplacement des caractères à ma place.


Un jour vous vous deciderez à utiliser Tidy :

> http://php.net/tidy

Smiley cligne
Pages :