[PHP] get_html_translation_table ça existe encore, ça ?

Didjo

Membre actif
9 Novembre 2003
967
85
Paris
Bonjour bonjour !

Allez hop une petite remise en jambe aujourd'hui, la nécessité de faire un mini-site en PHP... faut bien s'y remettre de temps en temps.

Du coup j'ai un ch'tit problème !
Je veux remplacer, dans une variable, les caractères spéciaux par leur code HTML.

Le script (au milieu d'une page HTML dont voici l'encodage : <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">)
Bloc de code:
<?php
$description = "test àéè";
$desc = strtr($description, array_flip(get_html_translation_table(HTML_ENTITIES)));
echo $desc;
echo "<br />";
echo get_html_translation_table(HTML_ENTITIES);
echo "<br />";
echo "<br />";
$trans = get_html_translation_table(HTML_ENTITIES);
$str = "Hallo &amp; <Frau> &amp; Krämer";
$encoded = strtr($str, $trans);
echo $encoded;
?>
Le problème c'est que :
echo $desc; renvoit "test Ã&nbsp;éè¨"
echo get_html_translation_table(HTML_ENTITIES); renvoit "Array"
et echo $encoded; renvoit "Hallo &amp; &lt;Frau&gt; &amp; Krämer"

Ce dernier script (après les deux <br />) vient de php.net, et normalement, ça devrait renvoyer "Hallo &amp; &lt;Frau&gt; &amp; Kr&auml;mer"

Donc à mon avis c'est get_html_translation_table qui n'aboutit pas, vu qu'il n'affiche rien dans l'array et que les caractères ne sont pas changés...
Essayé en locale comme sur serveur (OVH et Free), ça donne pareil...

Comment puis-je résoudre ça ?
Ou sinon si quelqu'un à déjà une fonction pour transcrire tout les caractères spéciaux (ce que ne fait pas mon script, on est d'accord) en code HTML, je suis prenneur ;)

Merci :)
 
Bah ça marchera, mais le but ne sera pas atteint vu que mes caractères ne seront pas en HTML... et c'est ce que je veux ;)

(ou L'Art de son compliquer la vie).
Nan, pour de multiples besoins de réutilisation, il me faut transformer ces caractères. A la limite j'utilise strtr pour remplacer tout les caractères un par un mais c'est trop bête, si j'arrive à faire marcher ça se serait nickel...
 
Le script (au milieu d'une page HTML dont voici l'encodage : <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">)

Vérification avec la source du lien que j'ai filé :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

;)

Ou alors est-il mieux aujourd'hui de forcer un UTF-8 et de tout mettre avec des accents dans la source... ?
 
ça c'est le codage html que tu indiques au navigateur... pas le codage du fichier...
Lorsque tu es dans ton éditeur préféré (smultron, textmate...) tu peux choisir l'encodage. Quel est celui de ton fichier test.php ?

Autre possibilité : le array_flip. Fait un essai sans.
 
Ah oui effectivement - j'y ai pas pensé ! => UTF 8... :siffle:
Test en passant le fichier en Latin Occi et sans le array_flip :
http://www.didjo.net/photo/test.php
(mais mes caractères html ne sont pas là...)

est-ce mieux de tout mettre en UTF-8 sans se compliquer la vie ou alors laisser en latin occi et trouver une réponse ou une alternative à ce problème ?
 
En ISO, même script qu'au départ...
http://www.didjo.net/photo/test.php

ça marche pour la ä ! Tiens... pas pour ceux du dessus...

EDIT (c'est con de ne le préciser que maintenant ^^)
eh bien le array_flip est inutile donc.

Nickel, je ferais attention à l'encodage de mes fichiers maintenant ;)

Merci beaucoup !
 
Mais du coup j'en profite...
Pour les PHP comme pour l'HTML (ou le CSS), le mieux, c'est du fichier encodé en UTF-8 avec la meta correspondante, ou du fichier encodé en ISo Latin Occi avec la meta correspondante ?

;)