Comment faire des remplacements dans des fichiers (sed + regex)
Résolu
vinok972
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
vinok972 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
vinok972 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à remplacer les occurences suivantes:
par
sur tous les fichiers PHP contenus dans un dossier en ligne de commande.
Je migre de PHP 5.2 à 5.4 et forcément les variables tableaux sans quotes ç ane passe pas... J'ai plus de 30000 variables à corriger et à la main c'est chaud...
La piste que j'ai est d'utiliser une commande du style:
mais ça ne marche pas.
Est ce que quelqu'un peut m'aider ?
Merci.
Je cherche à remplacer les occurences suivantes:
$_POST[toto] $_REQUEST[tata] $_SESSION[tutu] $tab[truc]
par
$_POST['toto'] $_REQUEST['tata'] $_SESSION['tutu'] $tab['truc']
sur tous les fichiers PHP contenus dans un dossier en ligne de commande.
Je migre de PHP 5.2 à 5.4 et forcément les variables tableaux sans quotes ç ane passe pas... J'ai plus de 30000 variables à corriger et à la main c'est chaud...
La piste que j'ai est d'utiliser une commande du style:
find . -name "*.php" -print | xargs sed -i.old -r "s/\$_(?:[a-zA-Z])*\[(?:[a-zA-Z])*\]/\$_(?:[a-zA-Z])*\['(?:[a-zA-Z])*'\]/g"
mais ça ne marche pas.
Est ce que quelqu'un peut m'aider ?
Merci.
A voir également:
- Comment faire des remplacements dans des fichiers (sed + regex)
- Renommer des fichiers en masse - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment ouvrir un fichier bin ? - Guide
- Comment ouvrir des fichiers .docx - Guide
4 réponses
Salut,
Ne connaissant pas trop le "php", pour ne pas dire pas du tout, j'aimerai savoir si des crochets peuvent se trouver ailleurs dans la syntaxe que dans des variables tableaux ?
Ceci afin de généraliser et d'optimiser la syntaxe avec "sed" ;-)
Ne connaissant pas trop le "php", pour ne pas dire pas du tout, j'aimerai savoir si des crochets peuvent se trouver ailleurs dans la syntaxe que dans des variables tableaux ?
Ceci afin de généraliser et d'optimiser la syntaxe avec "sed" ;-)
on peut avoir $truc["machin"][bidule]["chouette"]
qu'il aurait fallu remplacer par $truc['machin']['bidule']['chouette']...
Là ça aurait été parfait, mais bon je ne veux pas trop vous embêter non plus :D
qu'il aurait fallu remplacer par $truc['machin']['bidule']['chouette']...
Là ça aurait été parfait, mais bon je ne veux pas trop vous embêter non plus :D
Ok, donc voilà 2 syntaxes (la 2nd au cas ou on pourrait avoir des crochets ailleurs) :
En combinant avec find :
$ cat plop $_POST[toto] $_REQUEST[tata] $_SESSION[tutu] $tab[truc] $ sed -r "s/\[([^]]*)\]/\['\1'\]/g" plop $_POST['toto'] $_REQUEST['tata'] $_SESSION['tutu'] $tab['truc'] $ sed -r "s/(\\\$_*[[:alpha:]]*\[)([^]]*)\]/\1'\2'\]/g" plop $_POST['toto'] $_REQUEST['tata'] $_SESSION['tutu'] $tab['truc'] $
En combinant avec find :
find . -name "*.php" -exec sed -i.old -r "s/\[([^]]*)\]/\['\1'\]/g" {} \;