begin process at 2012 05 29 01:50:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Expression régulière balaise


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Expression régulière balaise

mercredi 24 février 2010 à 12:30:54 | Expression régulière balaise

rekam

Bonjour!

Je cherche depuis un moment un moyen de faire une expression régulière pour résoudre ce genre de cas:

Code PHP :
du texte divers {une_string un_param="une valeur" un_autre="12"} et le texte qui continue, avec éventuellement un autre {autre} sans paramètres.


L'idée étant d'extraire chaque {xxx accompagnés de leur xxx=xxx autant de fois qu'il y en a.

Et... ben c'est pas évident

Voilà ce que j'ai pu faire jusqu'à présent:
Code PHP :
$content = "Voir l'exemple ci-dessus";
$reg = "/(\{|%7B)(\w*)( (\w*)=(\w*))*(\}|\%7D)/i";
preg_match_all($reg, $content, $matches, PREG_SET_ORDER);
if ($matches) {
    foreach ($matches as $match) {
        // récupération du nom de la variable
        $index_name = $match[2];
        // récupération de la paire clé=valeur
        $index_params = array($match[4] => $match[5]);
        // on fait ensuite du code métier divers
        ...
    }
}


ça fonctionne bien, sauf que je n'arrive pas à récupérer toutes les pairs clé/valeur. Est-ce possible en une seule expression?

Merci d'avance!
rekam
mercredi 24 février 2010 à 13:04:51 | Re : Expression régulière balaise

syndrael

Et un explode sur ta chaine avec l'espace en séparateur ? suivi d'une boucle sur chacun des éléments qui refait un explode avec le signe = en séparateur ?
Ce ne peut pas te convenir ?
S.
mercredi 24 février 2010 à 19:55:15 | Re : Expression régulière balaise

kohntark

Membre Club
Salut Rekam,

Je pense comprendre ce que tu souhaites, cela étant pour tenter de faire une bonne regex il faut être le plus précis possible et étudier toutes les possibilités.

du texte divers {une_string un_param="une valeur" un_autre="12"} et le texte qui continue, avec éventuellement un autre {autre} sans paramètres.

Par exemple :
le biniou en jaune est il toujours un int ? ... ou peut il être une string, un float, ... ?
le bastringue en bleu peut il avoir des espaces, des car spéciaux ?
...

Ce ne sont là que des exemples, mais il est indispensable de le savoir pour mettre en place une regex efficace et la moins consommatrice possible.
Ca serait peut être une bonne idée que tu fournisses un fichier type qui contient toutes les situations possibles.

Indique également la taille de la chaîne à traiter (5 lignes ? 300 ?). Si elle est très faible il n'y a peut être pas lieu de s'embarrasser avec une regex et la piste proposée par Syndrael me semble être une bonne idée.

Cordialement,




Kohntark -



Cette discussion est classée dans : code, valeur, expression, match, régulière


Répondre à ce message

Sujets en rapport avec ce message

Expression PCRE ... [ par LocalStone ] 'soir ! Voilà, je cherche à parser les attributs d'une balise XML. C'est assez simple, grâce au pattern suivant : $pattern = '/(.+?)=("|\')(.+?)(\\2)/ Expression régulière [ par xaviernuma ] Bonjour,Sur Internet j'ai trouvé il semblerai deux type de syntaxe pour les expressions régulière :[code]/^class=\"test\">(.*)$/[/code]et [code]#class expression régulière cdata [ par pcmanprogrammeur ] bonjour à tous j'ai besoin d'encadrer les informations d'un document XML par des CDATA. Pour l'instant, j'en suis là : [code=php] $xml = "idperso"; expression régulière [ par mfaraday ] SalutUne fois de plus, je me prends la tête avec une expression régulière !Alors voila je voudrais remplacer dans un texte tout ce qui est de la forme Checkbox affiche une valeur dans un champ text [ par rodlake ] Bonjour Je suis débutant en PHP et j'essaie de faire un formulaire d'évaluation. Le formulaire aura plusieurs questions sous ce format: Question 1 ou Problème connection WMI en php après hébergement [ par Kaioshin12 ] Bonjour à tous, j'espère être dans la bonne partie. Voilà, je suis en train de me faire un petit utilitaire en php et WMI me permettant d'obtenir dif Récupération valeur checkbox dans mysql [ par phoenixgreg ] Bonjour tout le monde, J'aimerai en effet récupérer la valeur de ma checkbox. Pour cela j'ai créé un champ newsletter en bool avec par defaut 0. Dan si valeur de variable pas dans table alors..... [ par herve911 ] bonsoir tout le monde ! j'ai besoin d'aide svp j'ai écrit un script qui dois lire dans une table et afficher certaines valeurs mais si la valeur de la Demande d'aide pour une expression régulière [ par bluemandfr ] Bonjour à tous ! J'ai le code suivant : [code=php]$n = "\n"; echo ''.eregi_replace('[ \n]* '.$n.' '); echo ''.eregi_replace('[ \n]* ".$n." ");[/code confond la valeur ' et le séparateur ' [ par wallysub ] echo "Valider "; Bonjour dans la ligne ci dessus j'ai le pb suivant ['code'] me pose un souci car la valeure de "code" est du texte qui peut comteni


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales