Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
852 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Correction avec les expressions régulières

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Correction avec les expressions régulières

n°1457105
bagu
Posté le 14-10-2006 à 10:36:35  profilanswer
 

Bonjour,
 
Je suis en train d'effectuer de très nombreuses corrction sur un cms et je me suis penché sur la correction ou plutot, la mise en conformité de certaines balise à l'aide d'expression régulières pour effectuer mes recherches...
 
Mais là, je butte sur l'expression régulière à faire pour que la recherche me sorte tous les fichiers qui contiennent une balise <img qui ne se finisse pas par /> (<-c'est surtout ca qui me pose probleme)
 
Pourriez-vous m'aider ?
 
Merci

mood
Publicité
Posté le 14-10-2006 à 10:36:35  profilanswer
 

n°1458300
bagu
Posté le 16-10-2006 à 20:08:11  profilanswer
 

Bon, devant la foule de réponse (c'est vrai que c'est chaud les regexp) j'ai tenté avec un amis de m'en sortir...
 
Mais ceci :
 
<img[^>]*[^/]>
 
Ne fonctionne pas dans les cas ou on a une balise de ce type :
 
<img src='<?php echo $chemin; ?>' alt='' >
 
Aidez moi svp

n°1459080
mIRROR
Chevreuillobolchévik
Posté le 17-10-2006 à 19:48:08  profilanswer
 

pour l instant j en suis la
ca ramasse toutes les balises img meme celles avec du php dedans

/<img .*?(?<!\?)>/


mais j arrive pas a séparer celles qui sont bien fermées ou non donc j ai pas d autre idee que de faire un second nettoyage ensuite sur les resultats
je continue a y reflechir de mon coté
(un peu)

n°1459252
bagu
Posté le 18-10-2006 à 00:51:12  profilanswer
 

merci beaucoup de ton aide...

n°1459284
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-10-2006 à 09:16:21  profilanswer
 

/<img(?:[^<]*?)(?<!\/)>/

n°1459524
bagu
Posté le 18-10-2006 à 13:48:24  profilanswer
 

y'a un soucis avec ton expression anapajari :
Ca détecte :
preg_match("/<img?\s+src=([\"|'|`|])(.+?)\\1.+>/is", $im, $arr);
 
alors que cela ne devrais pas et ca ne détecte pas :
<img src='test.gif'>
 
alors que ca devrais...
 
Strange non ?

n°1459532
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-10-2006 à 13:58:54  profilanswer
 

bagu a écrit :

y'a un soucis avec ton expression anapajari :
Ca détecte :
preg_match("/<img?\s+src=([\"|'|`|])(.+?)\\1.+>/is", $im, $arr);
 
alors que cela ne devrais pas et ca ne détecte pas :
<img src='test.gif'>
 
alors que ca devrais...
 
Strange non ?


rien compris   [:roane]  [:roane]  
mais:

Code :
  1. <?php
  2. $a = "<img src='pouet'> <img src='pouet2' alt='truc'/> <img touiuiilout >";
  3. preg_match_all("/<img(?:[^<]*?)(?<!\/)>/", $a, $match);
  4. var_dump($match);
  5. ?>


affiche

array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(17) "<img src='pouet'>"
    [1]=>
    string(18) "<img touiuiilout >"
  }
}


Et c'est bien ce que tu voulais non  :??:


Message édité par anapajari le 18-10-2006 à 13:59:44
n°1459536
bagu
Posté le 18-10-2006 à 14:04:41  profilanswer
 

a voui...scuse...
 
J'explique...j'utilise un logiciel fonctionnant a l'aide de regexp pour chercher quels fichiers contiennent des balises non conformes...
 
Ainsi, si un fichier contient <img src='truc.gif'> au lieu de <img src='truc.gif' /> il doit être touvé grave au regexp...
 
Donc je cherche une regexp trouvant toutes les balises img non fermées par />

n°1459541
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-10-2006 à 14:07:29  profilanswer
 

Bin ma regex marche nickel :D
Et c'est normal que ça remonte:

Code :
  1. preg_match("/<img?\s+src=([\"|'|`|])(.+?)\\1.+>/is", $im, $arr);


vu que  

Code :
  1. <img?\s+src=([\"|'|`|])(.+?)\\1.+>


est une balise <img non terminée par un />

n°1459542
bagu
Posté le 18-10-2006 à 14:08:52  profilanswer
 

voui...mais pourquoi <img src='truc.gif'> n'est pas détecté alors que la balise de fin est > et non /> ?
 
pour /<img?\s+src=([\"|'|`|])(.+?)\\1.+>/ , si je pige bien, il faudrais que je remplace cela par /<img?\s+src=([\"|'|`|])(.+?)\\1.+\/>/  non ?


Message édité par bagu le 18-10-2006 à 14:11:18
mood
Publicité
Posté le 18-10-2006 à 14:08:52  profilanswer
 

n°1459567
mIRROR
Chevreuillobolchévik
Posté le 18-10-2006 à 14:29:18  profilanswer
 

ha ben j ai compris pourquoi mes tests marchaient pas hier :D
j avais betement mis l assertion sur le / avant le ?  
avec ca ca devrait marcher impec [:huit]

/<img.*?(?<!\?)(?<!\/)>/

n°1459600
bagu
Posté le 18-10-2006 à 14:54:59  profilanswer
 

idem que pour anapajari...Ca ne sort pas <img src='truc.gif'> en résultat :(

n°1459615
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-10-2006 à 15:09:42  profilanswer
 

mIRROR a écrit :

ha ben j ai compris pourquoi mes tests marchaient pas hier :D
j avais betement mis l assertion sur le / avant le ?  
avec ca ca devrait marcher impec [:huit]

/<img.*?(?<!\?)(?<!\/)>/



tu peux l'écrire comme ça c'est plus "clair":

/<img.*?(?<![\/|\?])>/


bagu a écrit :

idem que pour anapajari...Ca ne sort pas <img src='truc.gif'> en résultat :(


tu dois faire nawak car ma regex est testée et fonctionne ( voir l'exemple au dessus) et celle de mIRROR doit également être correcte.
 

n°1459618
bagu
Posté le 18-10-2006 à 15:10:33  profilanswer
 

ben teste avec powergrep...tu verra ;)

n°1459619
Chaos Inte​stinal
Posté le 18-10-2006 à 15:11:03  profilanswer
 

Et si son outil supporte pas les assertions arrières négatives ? [:opus dei]

n°1459621
Chaos Inte​stinal
Posté le 18-10-2006 à 15:13:02  profilanswer
 

Chaos Intestinal a écrit :

Et si son outil supporte pas les assertions arrières négatives ? [:opus dei]


 

Citation :

PowerGREP's regular expression engine is fully compatible with popular regex flavors such as those used by Perl, Java and the .NET framework. PowerGREP also supports all the Perl 5 extensions, such as non-greedy operators and zero-width assertions. PowerGREP also supports the Java extensions (possessive quantifiers) to Perl's flavor, as well as the .NET framework's extensions (named capturing groups).


 
[:pingouino]

n°1459651
mIRROR
Chevreuillobolchévik
Posté le 18-10-2006 à 15:28:34  profilanswer
 

anapajari a écrit :

tu peux l'écrire comme ça c'est plus "clair":

/<img.*?(?<![\/|\?])>/


 
tu dois faire nawak car ma regex est testée et fonctionne ( voir l'exemple au dessus) et celle de mIRROR doit également être correcte.


 
ah oui j avais des tests avec des ou mais pareil j avais mis le ? avant le / :D
 
sinon je confirme testé chez moi et ca marche tres bien :o
 
en bonus jte fous ma string de test

Citation :

'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris
augue arcu, placerat sed, v<img fdhfmjfmlsjdmqsjgdf /> arius vel, tempus eget, pede. Donec condimentum leo vel
purus. Sed luctus, risus vel tincidunt faucibus, diam turpis tristique erat, eget
tempor mi mi pretium<img fdhfmjfmlsjdmqsjgdf> metus. Ut a enim. Integer congue libero ac mauris. Aenean blandit
leo non orci. Fusce tempus, lacus sit amet iaculis sagittis, risus felis aliquam
massa, id congue <img <?skdjklsmqd skdmjfqsd ?> smxdhskjsdrc="hflsjdflgd/hjllsdklgm.gig"fkmd >dolor pede nec massa. In ut mi id orci euismod imperdiet. Praesent
pellentesque. Donec aliquet, ipsum nec dictum sollicitudin, arcu pede eleifend sem,
id mattis est jus<img <?skdjklsmqd skdmjfqsd ?> smxdhskjfkmd />to nec leo. Nam augue turpis, vestibulum eu, iaculis vel, commodo
id, magna. Aenean lectus enim, interdum eget, ultricies in, posuere a, ligula.'


 
et la reponse

Array
(
    [0] => Array
        (
            [0] => <img fdhfmjfmlsjdmqsjgdf>
            [1] => <img <?skdjklsmqd skdmjfqsd ?> smxdhskjsdrc="hflsjdflgd/hjllsdklgm.gig"fkmd >
        )
 
)

n°1459688
bagu
Posté le 18-10-2006 à 15:43:38  profilanswer
 

donc ca les supporte...donc je pige pas d'ou viens le soucis...
 
ma ligne de test est très simple :  
 
<?php
 
echo "<img src='test.gif'>";
 
?>
 
et ca n'est pas détecté je n'y capte plus rien

n°1459712
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-10-2006 à 15:54:03  profilanswer
 

Code :
  1. <?php
  2. $a = '<?php
  3. echo "<img src=\'test.gif\'>";
  4. ?> ';
  5. preg_match_all("/<img(?:[^<]*?)(?<!\/)>/", $a, $match);
  6. var_dump($match);
  7. ?>


affiche:

array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(20) "<img src='test.gif'>"
  }
}


:o :o :o

n°1459714
mIRROR
Chevreuillobolchévik
Posté le 18-10-2006 à 15:54:23  profilanswer
 

bagu a écrit :

<img src='<?php echo $chemin; ?>' alt='' >


 
 

bagu a écrit :

donc ca les supporte...donc je pige pas d'ou viens le soucis...
 
ma ligne de test est très simple :  
 
<?php
 
echo "<img src='test.gif'>";
 
?>
 
et ca n'est pas détecté je n'y capte plus rien


 
faudrait savoir :cry:
de toute facon ca marche quand meme :o
 
edit :
anapajari [:benou_grilled]


Message édité par mIRROR le 18-10-2006 à 15:55:32
n°1459945
bagu
Posté le 18-10-2006 à 18:04:43  profilanswer
 

ca doit pouvoir détecter l'ensemble des possibilités de balises img
 
Par contre, je soutiens mordicus que quand je donne cette expression réguliere a manger a powergrep, ben il la digére, mais ne me sort pas les résultats simples :(

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Correction avec les expressions régulières

 

Sujets relatifs
help correction script[C Sharp] Expressions Régulières sous ASP.Net
expresions régulièresremplacement avec expressions regulières
expressions régulières[KSH] substring - expressions régulières - ${i%toto}
Plus de sujets relatifs à : Correction avec les expressions régulières


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR