Bonjour,
J'ai un système qui recherche les valeurs de plusieurs DEFINE dans un fichier et les remplaces par une nouvelle valeur.
Dernièrement j'ai rajouté une nouvelle donnée dans ce fichier. Une clé pour crypter mes mots de passe.
Le problème est que lorsque je passe en paramètre la valeur de la clé (ex : $2a$07$R68DidcybS5gslnTxgZ3QFBDn$) l'expression régulière semble avoir des problème avec les $ car la valeur renvoyé est ('a$R68DidcybS5gslnTxgZ3QFBDn$) simple cote du début compris.
Pour exemple:
État de départ
État attendu
Code : Sélectionner tout - Visualiser dans une fenêtre à part DEFINE('CLE_CRYPTAGE', '') ;
État obtenu (et il y a bien 2 simple cote au début)
Code : Sélectionner tout - Visualiser dans une fenêtre à part DEFINE('CLE_CRYPTAGE', '$2a$07$R68DidcybS5gslnTxgZ3QFBDn$') ;
Voici le script que j'utilise, si qq peux m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DEFINE('CLE_CRYPTAGE', ''a$R68DidcybS5gslnTxgZ3QFBDn$') ;
Merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $defines = array("'CLE_CRYPTAGE'"); // les constantes à changer $remplacer = array("'".$cle."'"); // les nouvelles valeurs $valeur = '(([\'"]).*?\2|[^\s)]+)'; // match anciennes valeurs $regex = array(); foreach ($defines as $define) { $regex[] = '`DEFINE\s*\(\s*' . $define . '\s*,\s*\K' . $valeur . '`si'; } $NewConfig = preg_replace($regex, $remplacer, $filename);
Partager