Définition d'un masque pour preg_match_all

Répondre
Amery
le 25/03/2010 à 16:33
Amery
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
LA GLOBULE
le 26/03/2010 à 09:06
LA GLOBULE
<?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 '.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours