écriture en fraction enboité & regex

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : écriture en fraction enboité & regex

Re: écriture en fraction enboité & regex

par azzeryx » 09 mai 2017, 17:16

En faite je vient de me rendre compte que mon premier problème est résolut seulement si je met le code :

Code : Tout sélectionner

$pattern = "/frac\(([[:print:]]+);([[:print:]]+)\)/U"; $math = preg_replace($pattern, '<sup>$1</sup>&frasl;<sub>$2</sub>', $math); if(preg_match_all("/frac\(([[:print:]]+);([[:print:]]+)\)/U", $math, $matches)) { $math = preg_replace("/frac\(([[:print:]]+);([[:print:]]+)\)/U", "<sup>$1</sup>&frasl;<sub>$2</sub>", $math); }
Ce qui n'est pas un code très propre puisque je fait plus ou moins deux fois la même action...
(Et moi qui croyait avoir si facilement résolut mon problème #-o , bon au moins l'autre est résolut... :D :D )

Re: écriture en fraction enboité & regex

par azzeryx » 08 mai 2017, 17:35

Alors là MERCI, ça résous vraiment des problème simple que je traîne depuis bien trop longtemps, j'ai appris des choses bien utile grâce à toi merci !!!

Re: écriture en fraction enboité & regex

par @rthur » 08 mai 2017, 17:19

Bonjour,

Il existe des opérateurs pour les regex justement pour modifier ce comportement, c'est ce qu'on appelle un comportement greedy ou lazy
- Greedy = gourmand, c'est à dire qu'il va essayer de prendre le maximum de texte qui correspond au pattern, c'est le comportement par défaut.
- Ungreedy ou Lazy = paresseux , c'est à dire qu'il va prendre le moins de texte possible (ce que tu cherches à faire)

Pour passer une capture de texte en lazy, il suffit de mettre un point d'interrogation après le quantifieur, soit par exemple .+?
C'est possible aussi de le faire de façon globale pour ta regex en ajoutant un flag U (à la fin de ta regex après le slash)

Re: écriture en fraction enboité & regex

par azzeryx » 08 mai 2017, 16:48

Rebonjour, pouvez-vous me donnez une indication. J'ai un vrais problème avec ce type de code.
De la même sorte je rencontre un problème avec le code :

Code : Tout sélectionner

if(preg_match_all("/{\[def:(.*)\]\[id=(.*)\]\[(.*)\]}/", $var, $matches)) { $var = preg_replace("/{\[def:(.*)\]\[id=(.*)\]\[(.*)\]}/", "<dl style=\"width:80%; border:1px solid gray; padding:1px; font-family:swiss; border-top:3px solid rgb(63,72,204); background-color: rgba(148,182,239,0.75);\"><dt style=\"font-weight:bold;\">$1 :</dt><dd>$3</dd></dl>", $var); }
Si il y a plusieurs balise dans la même page il y a un problème : tout ce qui est pris entre les balise les plus exterieur est sélectionner...
je n'arrive pas à réglés ces problèmes qui pourtant sont du même type...

écriture en fraction enboité & regex

par azzeryx » 07 mai 2017, 15:27

Bonjours à tous,
Petite question simple, comment amélioré ce code (qui transforme frac(a,b) en a/b) :

Code : Tout sélectionner

<?php $pattern = "/frac\(([[:print:]]+);([[:print:]]+)\)/"; $math = preg_replace($pattern, '<sup>$1</sup>&frasl;<sub>$2</sub>', $math); ?>
pour que des fractions emboîtés ( frac(5,frac(6,7)) ) fonctionne ?
Actuellement seul la chaîne la plus extérieur fonctionne...