IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Manipulation de caractères ASCII hors alpha-numériques


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Manipulation de caractères ASCII hors alpha-numériques
    Bonjour cher lecteurs,

    Quelle solution adopter pour pouvoir gérer une chaîne de caractères quelconques issue d'un random de 0 à 255 couvrant donc toute la table ascii susceptible d'être comme celle-ci :
    ±²45`¯dL3'O*hq¹"2L;³r7£brbz*PbZj^µ8e<¿E@5¦²aS´rqx¢JG¢Yt½±»O(+¼jºy¸§:+5Xzh¬k¯\\$Q

    Le problème est bien sur au niveau des caractères en rouges sachant que la chaîne ne peut pas être modifiée par des caractères d'échappement. Cette chaîne va être manipulée mais doit, en nombre et en qualité être fidèle.

    Merci de vos réflexions.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    \ ' " ne sont "speciaux" que dans une ligne de code donc il n'y pas de problème.

    Par contre ASCII c'est 127 caractère donc seulement 32-126 sont de vrais caractères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $string = '';
    for ($i = 0; $i < 40; $i++) {
      $string .= char(rand(32, 126));
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par sabotage Voir le message
    \ ' " ne sont "speciaux" que dans une ligne de code donc il n'y pas de problème.

    Par contre ASCII c'est 127 caractère donc seulement 32-126 sont de vrais caractères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $string = '';
    for ($i = 0; $i < 40; $i++) {
      $string .= char(rand(32, 126));
    }
    Merci de cette première réponse.

    Toutefois les valeurs de 0 à 31 (et au-delà de 127) sont signifiantes / codées et les première sont d'ailleurs dans le code ASCII (128 caractères pas 96). Mais ce n'est pas le problème, les caractères chr(34), chr(39) et chr(92) sont dans la plage réduite que tu soulignes.

    Donc si tu reprends mon exemple sous cette forme :
    $Chaîne = '±²45`¯dL3'O*hq¹"2L;³r7£brbz*PbZj^µ8e<¿E@5¦²aS´rqx¢JG¢Yt½±»O(+¼jºy¸§:+5Xzh¬k¯\\$Q';
    ou
    $Chaîne = "±²45`¯dL3'O*hq¹"2L;³r7£brbz*PbZj^µ8e<¿E@5¦²aS´rqx¢JG¢Yt½±»O(+¼jºy¸§:+5Xzh¬k¯\\$Q";

    Comment php va-t-il se comporter, comment ton éditeur de texte va-t-il souligner le code ?

    Ma question est donc, comment faire pour manipuler une chaîne comportant les caractères chr(34), chr(39) et chr(92) sans devoir l'altérer en rajoutant des échappements afin d'autoriser que cette chaîne comporte, par exemple, deux antislash de suite ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ah j'ai compris ce que tu voulais :
    Avec Nowdoc (attention il faut PHP5.3) la chaine n'est pas du tout interpretée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $chaine = <<<'EOT'
    ±²45`¯dL3'O*hq¹"2L;³r7£brbz*PbZj^µ8e<¿E@5¦²aS´rqx¢JG¢Yt½±»O(+¼jºy¸§:+5Xzh¬k¯\\$Q
    EOT;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Ah j'ai compris ce que tu voulais :
    Avec Nowdoc (attention il faut PHP5.3) la chaine n'est pas du tout interpretée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $chaine = <<<'EOT'
    ±²45`¯dL3'O*hq¹"2L;³r7£brbz*PbZj^µ8e<¿E@5¦²aS´rqx¢JG¢Yt½±»O(+¼jºy¸§:+5Xzh¬k¯\\$Q
    EOT;
    Oui j'ai testé ceci (sans les quotes autour de EOT) mais sans aboutir à un résultat positif, j'aurais du le préciser.

    Cette solution fonctionne pour chr(34), chr(39) mais pas pour chr(92) '\' simple ou double. je ne sais pas pourquoi ce caractères est traité malgré EOT ...

    Et je ne peux pas trop me permettre d'altérer la séquence hélas.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    sans les quotes autour de EOT
    Il les faut justement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Il les faut justement.
    Ha ?

    Bizarre autant qu'étrange, en les mettant ma coloration syntaxique réagit comme si je n'avais pas fermé une quote et la deuxiéme partie EOT; par exemple semble inclus dans quote.

    J'utilise SublimText et ça fait un drôle de résultat.

    MAIS ça fonctionne !

    Merci vraiment beaucoup pour ta résolution rapide de mon problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/07/2014, 16h20
  2. [RegEx] Supprimer les caractères non alpha numérique
    Par Opsse dans le forum Langage
    Réponses: 4
    Dernier message: 12/05/2013, 21h00
  3. Réponses: 5
    Dernier message: 06/10/2008, 12h28
  4. Print texte et variable numérique (+ caractère ASCII)
    Par micatmidog dans le forum Général Python
    Réponses: 4
    Dernier message: 15/12/2005, 22h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo