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 :

Difference entre str_replace et strtr


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut Difference entre str_replace et strtr
    Bonjour

    Ma question est dans le titre

    doc :
    https://www.php.net/manual/fr/function.str-replace.php
    https://www.php.net/manual/fr/function.strtr.php

    Pour moi les deux font exactement la même chose ?

    Je demande car je fais une petite fonction pour obtenir un token JWT qui soit sans caractère spéciaux (c'est pour une utilisation dans l'url, validation des adresses emails de clients bref) et il y a déjà une librairie qui fait ce genre de chose :
    https://github.com/firebase/php-jwt/

    et voici la fonction qu'ils utilisent dans la librairie :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        /**
         * Encode a string with URL-safe Base64.
         *
         * @param string $input The string you want encoded
         *
         * @return string The base64 encode of what you passed in
         */
        public static function urlsafeB64Encode(string $input): string
        {
            return \str_replace('=', '', \strtr(\base64_encode($input), '+/', '-_'));
        }
    fichier php : /blob/main/src/JWT.php | ligne 378.

    En gros, je cherche a décortiquer cette "simple" fonction..

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    avec 2 arguments pour strtr, les 2 fonctions font la même chose.
    avec 3 arguments la fonction strtr fait des remplacements d'un octet par un autre. donc par exemple dans votre exemple de code "+" sera remplacé par "-" et "/" remplacé par "_".
    attention à l'encodage utilisé par ce qu'avec utf-8 le caractère "é" par exemple est codé sur 2 octets et donc l'utilisation de strtr produire un résultat surprenant.

  3. #3
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    d'accord je vois.. Je vous remercie
    question par curiosité : il y a t-il un meilleur moyen de "nettoyer" une chaine base64_encode (c'est pour la création d'un token JWT)

Discussions similaires

  1. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  2. La difference entre XSL et XSLT?
    Par pantin dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2003, 15h14
  3. Difference entre fenetre et boite de dialog
    Par billyboy dans le forum Windows
    Réponses: 2
    Dernier message: 02/06/2003, 15h43
  4. [] Difference entre MSHFlexGrid et MSFlexGrid
    Par olivierx dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 23/04/2003, 08h48
  5. Difference entre types d'Adresse IP
    Par freud dans le forum Développement
    Réponses: 3
    Dernier message: 02/03/2003, 02h06

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