Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1122 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Fonction pour convertir chaine ASCII en caracteres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fonction pour convertir chaine ASCII en caracteres

n°1705961
Unparadize​d
Awaiting for the stars to fall
Posté le 21-03-2008 à 12:28:18  profilanswer
 

Bonjour,
 
je cherche depuis hier soir la solution a mon probleme, et devant mon echec, je viens demander de l'aide a des connaisseurs :)
 
Pour etre bref, je recupere d'une fonction existante une chaine ASCII, qui donne ceci : 5502020
et j'aimerais en recuperer la vraie valeur, qui est : 5502020
 
Dans cet exemple, je chercher a recuperer un entier, mais a vrai dire, j'aurais aussi besoin de tous les caracteres plus tard, donc un string serait parfait.
 
Je sais que je pourrais "explode()" la chaine, puis traiter chaque valeur avec chr() (chr(53) me donnera 5, chr(48) me donnera 0...) mais je me demandais s'il y avait une fonction php existante qui ferait deja le travail ?
on m'a suggere utf8_decode() ou urldecode() mais je n'ai pas encore reussi a le faire fonctionner.
 
je vous remercie d'avance !

mood
Publicité
Posté le 21-03-2008 à 12:28:18  profilanswer
 

n°1705996
olivthill
Posté le 21-03-2008 à 13:18:08  profilanswer
 

Oui, urldecode() est fait pour ça. Quel problème vous pose cette fonction ?

n°1706142
Xav_
The only one...
Posté le 21-03-2008 à 15:10:38  profilanswer
 

avec ce code:

Code :
  1. <?php
  2. $chaine = "&#53;&#53;&#48;&#50;&#48;&#50;&#48";
  3. echo urldecode($chaine);
  4. ?>


ça m'affiche bien: 5502020
 
C'est quoi le soucis que tu as ?


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°1706416
Unparadize​d
Awaiting for the stars to fall
Posté le 22-03-2008 à 00:53:01  profilanswer
 

re-bonjour,
 
je m'excuse, j'ai oublie de preciser un detail : oui, urldecode() fonctionne sans probleme pour l'affichage. Mais en fait, j'ai besoin d'utiliser la valeur dans des donnes PHP ... j'ai entre autre besoin de faire des comparaisons et recherches dans SQL, et donc j'ai besoin d'assigner une variable avec la valeur recuperee.
 
Or quoique je fasse, ma variable a pour le moment : &#53;&#53;&#48;&#50;&#48;&#50;&#48;
J'essaie de le forcer en INT, ou utiliser differentes conversions, mais ca me retourne toujours 0.
 
et par exemple, $variable = urldecode($chaine); ne fonctionne pas :(
 
des suggestions ? :)

n°1706449
jagstang
Pa Capona ಠ_ಠ
Posté le 22-03-2008 à 09:58:11  profilanswer
 

$variable = intval(urldecode($chaine));  
 
?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1706493
Unparadize​d
Awaiting for the stars to fall
Posté le 22-03-2008 à 11:48:15  profilanswer
 

jagstang a écrit :

$variable = intval(urldecode($chaine));  
 
?


 
 
je viens de tester ca, plein d'espoir :D
mais non, malheureusement le intval me retourne 0.
et strval me retourne la meme chaine en ASCII
 
donc je me resigne a l'idee de faire ma propre fonction :) ce qui m'embete un peu vu que le systeme va devoir traiter des tonnes d'information a chaque fois, donc j'ai peur que ce soit lourd ... mais bon :)

n°1706500
Unparadize​d
Awaiting for the stars to fall
Posté le 22-03-2008 à 12:03:37  profilanswer
 

Code :
  1. function ascii_to_string($chaine_a_convertir){
  2.  $chaine_a_convertir = str_replace("&#","",$chaine_a_convertir);
  3.  $chaine_array = explode(";",$chaine_a_convertir);
  4.  $x = 0;
  5.  while($chaine_array[$x] !="" ){
  6.   $chaine_convertie .= chr($chaine_array[$x]);
  7.   $x++;
  8.  }
  9.  return $chaine_convertie;
  10. }


 
vous voyez une facon de faire plus simple ? si oui, je suis preneur :D

n°1706611
jagstang
Pa Capona ಠ_ಠ
Posté le 22-03-2008 à 18:18:12  profilanswer
 

y'a surement moyen de faire plus simple avec preg_match_all


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1706672
Profil sup​primé
Posté le 23-03-2008 à 01:37:44  answer
 

vous vous prenez grave la tête les gars, un preg_match pour ca ? réinventer la roue ? faut pas pousser, juste lire la documentation
 
Unparadized, urldecode() n'est pas adapté a l'encodage de ta valeur  (cf documentation : http://fr2.php.net/urldecode) :

Citation :

Décode toutes les séquences %## et les remplace par leur valeur.


... ce qui ne correspond pas du tout à ton cas
 
par contre, cette fonction te conviendra à 100% : html_entitiy_decode (cf documentation http://fr3.php.net/html_entity_decode) :
 

Code :
  1. <?php
  2. //bien penser à mettre un ; en fin de chaine sinon le dernier &#.. ne sera pas pris en compte
  3. $chaine = "&#53;&#53;&#48;&#50;&#48;&#50;&#48;";
  4. echo 'chaine='.$chaine;
  5. //youpi j'ai ma valeur  décodée
  6. $var = html_entity_decode($chaine);
  7. var_dump($var);
  8. //la voila en entier :-)
  9. $var = (int)$var;
  10. var_dump($var);
  11. ?>


 
:ange:

n°1706673
Profil sup​primé
Posté le 23-03-2008 à 01:39:36  answer
 

Xav_ a écrit :

avec ce code:...


Xav_ ->... évidement, urldecode n'étant pas fait pour ce type de chaine, tu peux meme faire "echo $chaine;" t'auras le meme résultat...


Message édité par Profil supprimé le 23-03-2008 à 01:40:20

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Fonction pour convertir chaine ASCII en caracteres

 

Sujets relatifs
fonction matcher connue en PHP mais pas en JAVALes fichiers dans une fonction
erreur 3664 pour une requete sql avec la fonction openrecordsetProbleme avec des caractères japonnais et ajax
[Débutant] Retourner une chaîne de caractèresconversion chaine ascii et accents
RewriteRule et caractères spéciaux[PHP] fonction: probleme de debutant
Plus de sujets relatifs à : Fonction pour convertir chaine ASCII en caracteres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR