Fonction pour convertir chaine ASCII en caracteres

Fonction pour convertir chaine ASCII en caracteres - PHP - Programmation

Marsh Posté le 21-03-2008 à 12:28:18    

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 !

Reply

Marsh Posté le 21-03-2008 à 12:28:18   

Reply

Marsh Posté le 21-03-2008 à 13:18:08    

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

Reply

Marsh Posté le 21-03-2008 à 15:10:38    

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
Reply

Marsh Posté le 22-03-2008 à 00:53:01    

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 ? :)

Reply

Marsh Posté le 22-03-2008 à 09:58:11    

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


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 22-03-2008 à 11:48:15    

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 :)

Reply

Marsh Posté le 22-03-2008 à 12:03:37    

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

Reply

Marsh Posté le 22-03-2008 à 18:18:12    

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?  
Reply

Marsh Posté le 23-03-2008 à 01:37:44    

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:

Reply

Marsh Posté le 23-03-2008 à 01:39:36    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed