Convertir chaine en code type o ou #x6A;


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Convertir chaine en code type o ou #x6A;

Message le Mer Nov 17, 2010 9:31

Bonjour,

Je cherche, en PHP, le moyen de convertir une chaine de caractères en "caractère numériques hex" ou en "caractère numériques décimaux".
Exemple de convertisseur : http://hapax.qc.ca/conversion.fr.html
Ainsi, "Bonjour" devient Bonjour ou Bonjour

Après des recherches, je ne trouve rien qui aille dans ce sens. Connaissez vous un moyen d'y arriver ?

Je ne souhaite convertir et afficher comme ceci qu'une phrase dans mon code, est-ce que ça risque de poser problème au niveau de l'affichage ?
Pour être sur d'être clair, je veux que le code source affiche Bonjour et que le navigateur affiche Bonjour, le tout dans une page codée en UTF-8

Help really appreciated.

Merci

forummp3
WRInaute passionné
WRInaute passionné
 
Messages: 1982
Inscription: 8 Fév 2004

Re: Convertir chaine en code type o ou #x6A;

Message le Mer Nov 17, 2010 9:39

he ben tu prend la table ascii et tu fait la liste des str_replace a faire, ou bien sinon, tu utilise htmlentities qui t'encode seulement ce qui est utilise d'encoder.

Pourquoi ne veut tu pas encoder avec htmlentities ?


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: Convertir chaine en code type o ou #x6A;

Message le Mer Nov 17, 2010 9:57

il faut utiliser cette fonction pour récupérer le code ascii : http://www.phpsources.org/function.ord.php
et celle là pour récupérer le code hexa : http://www.phpsources.org/function.dechex.php


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Convertir chaine en code type o ou #x6A;

Message le Mer Nov 17, 2010 10:14

Merci.
ord() semblait me convenir mais pour tout un paragraphe il me renvoie juste "60".
htmlentities ça ne converti pas les lettres non ?

Effectivement il va falloir passer par des str_replace. C'est fou qu'il n'y ait pas de fonction toute prete pour ça non ?

Le truc, c'est que je veux l'inverse d'htmlentities : je veux garder < et > intacts mais convertir les lettres et chiffres !


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Convertir chaine en code type &#111; ou #x6A;

Message le Mer Nov 17, 2010 10:22

L'inverse de htmlentities() c'est html_entity_decode()
Code: Tout sélectionner
<?php
$content = '&#66;&#111;&#110;&#106;&#111;&#117;&#114; ou &#x42;&#x6F;&#x6E;&#x6A;&#x6F;&#x75;&#x72;';
echo html_entity_decode($content);
?>


Affiche:
Bonjour ou Bonjour

forummp3
WRInaute passionné
WRInaute passionné
 
Messages: 1982
Inscription: 8 Fév 2004

Re: Convertir chaine en code type &#111; ou #x6A;

Message le Mer Nov 17, 2010 10:23

he ben, tu fait d'abord htmlentities, et ensuite htmlspecialchars_decode pour juste remettre bien les caracteres speciaux html et non les lettres.


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: Convertir chaine en code type &#111; ou #x6A;

Message le Mer Nov 17, 2010 10:55

ord marche pour une lettre. Il faut donc faire une boucle pour toutes les lettres.


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Convertir chaine en code type &#111; ou #x6A;

Message le Mer Nov 17, 2010 11:20

Ecoutez je dois être totalement stupide car htmlentities ne me converti que les caractères spéciaux et en entité HTML (exemple € en &euro;).
En fait je cherche l'exact inverse de html_entity_decode(), enfin je pense.
Comment as tu obtenu ton &#66;&#111;&#110;&#106;&#111;&#117;&#114; Spout ?


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Convertir chaine en code type &#111; ou #x6A;

Message le Mer Nov 17, 2010 11:23

Je l'ai copié/collé de ton premier post.

forummp3
WRInaute passionné
WRInaute passionné
 
Messages: 1982
Inscription: 8 Fév 2004

Re: Convertir chaine en code type &#111; ou #x6A;

Message le Mer Nov 17, 2010 11:28

milkiway a écrit:Ecoutez je dois être totalement stupide car htmlentities ne me converti que les caractères spéciaux et en entité HTML (exemple € en &euro;).
En fait je cherche l'exact inverse de html_entity_decode(), enfin je pense.
Comment as tu obtenu ton &#66;&#111;&#110;&#106;&#111;&#117;&#114; Spout ?

ben c'est normal, les lettres normales n'ont pas besoin d'etre encodé, c'est la base du code ascii, donc aucun probleme de compatibilité avec les differents charsets.

Peut tu au moins nous expliquer le but final de cette manoeuvre? car là on voit pas l'interet pour tu te prend la tete?


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Convertir chaine en code type &#111; ou #x6A;

Message le Mer Nov 17, 2010 11:36

Code: Tout sélectionner
<?php
$string = 'Bonjour';
function ascii_encode($string)  {
    for ($i=0; $i < strlen($string); $i++)  {
        $encoded .= '&#'.ord(substr($string,$i)).';';   
    }
    return $encoded;
}
echo ascii_encode($string);
?>


Affiche:
&#66;&#111;&#110;&#106;&#111;&#117;&#114;

Source: http://www.php.net/manual/fr/function.ord.php#24475


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Convertir chaine en code type &#111; ou #x6A;

Message le Mer Nov 17, 2010 11:38

forummp3 a écrit:
milkiway a écrit:Ecoutez je dois être totalement stupide car htmlentities ne me converti que les caractères spéciaux et en entité HTML (exemple € en &euro;).
En fait je cherche l'exact inverse de html_entity_decode(), enfin je pense.
Comment as tu obtenu ton &#66;&#111;&#110;&#106;&#111;&#117;&#114; Spout ?

ben c'est normal, les lettres normales n'ont pas besoin d'etre encodé, c'est la base du code ascii, donc aucun probleme de compatibilité avec les differents charsets.

Peut tu au moins nous expliquer le but final de cette manoeuvre? car là on voit pas l'interet pour tu te prend la tete?

Merci, je sais parfaitement qu'il n'est pas NECESSAIRE de le faire.
Je veux juste le faire.

Spout, merci je teste ça ;)

forummp3
WRInaute passionné
WRInaute passionné
 
Messages: 1982
Inscription: 8 Fév 2004

Re: Convertir chaine en code type &#111; ou #x6A;

Message le Mer Nov 17, 2010 13:04

juste par curiosité, c'est pour quoi faire ce systeme ? tu veux crypter du texte a des newbies ?


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités