[Résolu PHP]aide pour passer de preg_replace à preg_replace_callback

aide pour passer de preg_replace à preg_replace_callback [Résolu PHP] - PHP - Programmation

Marsh Posté le 02-02-2018 à 14:56:04    

Bonjour à tous,
 
Je suis en train d'essayer de retaper une fonction de classe d'un module (adLdap pour ceux qui connaissent) et je me casse les dents sur :

Citation :

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead


 
Sauf que les regex et les fonctions de callback, je suis pas au niveau. Donc si vous avez un coup de pouce à me donner... Je vous en saurai gré  :sol: (avec des explications, ça serait top [:petrus75])
Voici le code :

Code :
  1. public function ldapSlashes($str){
  2.         return preg_replace('/([\x00-\x1F\*\(\)\\\\])/e',
  3.                             '"\\\\\".join("",unpack("H2","$1" ))',
  4.                             $str);
  5.     }


Et franchement, je galère à la transformer en preg_replace_callback instead.
 
Donc help  [:tartalap]  
 
Merci :)


Message édité par brutax le 05-02-2018 à 13:19:33
Reply

Marsh Posté le 02-02-2018 à 14:56:04   

Reply

Marsh Posté le 02-02-2018 à 17:30:50    

Lu,
 

Code :
  1.    '/[\x00-\x1F*()\\\\]/',
  2.    function ($m) {
  3.        return '\\\\\' . join('', unpack('H2', $m[0]));
  4.    },
  5.    $str
  6. );


?
 
A voir s'il ne faut pas supprimer une partie des antislashs du return de la fonction anonyme.
 
Pas besoin d'échapper les métacaractères "habituels" (parenthèses + *) lorsqu'ils sont dans une classe, ils n'en sont plus.


Message édité par pluj le 02-02-2018 à 17:37:17
Reply

Marsh Posté le 05-02-2018 à 13:19:22    

Effectivement, il faut retire un antislash.
C'est tout bon, merci pluj.

Reply

Sujets relatifs:

Leave a Replay

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