Salut,
j'essaie de faire un masque pour récupérer avec preg_match_all le nom et la valeur d'une constante définie avec la fonction define() :
- <?php
- define("MARIABLE1","long texte");
- define("MARIABLE_2","long texte");
- define("MARIABLE3","long texte");
- ?>
J'ai fait le masque suivant qui fonctionne correctement quand je le teste sur
http://www.gethifi.com/tools/regex
([A-Z0-9_]+)","([^"]+)
Mais dès que je le mets dans la fonction preg_match_all, j'ai des erreurs:
- <?php
- $str = '
- define("MARIABLE1","long texte");
- define("MARIABLE_2","long texte");
- define("MARIABLE3","long texte");
- ';
-
- preg_match_all('([A-Z0-9_]+)", "([^"]+)',$str,$output);
- ?>
Je dois échaper certains caractères, mais je sais jamais lesquels... J'ai essayé plusieurs combinaisons, mais sans succès...
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '"' in /xxx/ on line 8
- <?php
- $str = '
- define("MARIABLE1","long texte");
- define("MARIABLE_2","long texte");
- define("MARIABLE3","long texte");
- ';
-
- preg_match_all('`define[[:space:]]*\([[:space:]]*"([A-Z0-9_^"]*)"[[:space:]]*,[[:space:]]*"(.*)"[[:space:]]*\)[[:space:]]*;`UiS', $str, $output);
-
- print_r($output);
- ?>
Ceci fonctionne.
Par contre, cela limite la définition des define avec des doubles quotes " et non des simples quotes '.