Correction avec les expressions régulières - Divers - Programmation
Marsh Posté le 16-10-2006 à 20:08:11
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
Marsh Posté le 17-10-2006 à 19:48:08
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)
Marsh Posté le 18-10-2006 à 13:48:24
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 ?
Marsh Posté le 18-10-2006 à 13:58:54
bagu a écrit : y'a un soucis avec ton expression anapajari : |
rien compris
mais:
Code :
|
affiche
array(1) { |
Et c'est bien ce que tu voulais non
Marsh Posté le 18-10-2006 à 14:04:41
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 />
Marsh Posté le 18-10-2006 à 14:07:29
Bin ma regex marche nickel
Et c'est normal que ça remonte:
Code :
|
vu que
Code :
|
est une balise <img non terminée par un />
Marsh Posté le 18-10-2006 à 14:08:52
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 ?
Marsh Posté le 18-10-2006 à 14:29:18
ha ben j ai compris pourquoi mes tests marchaient pas hier
j avais betement mis l assertion sur le / avant le ?
avec ca ca devrait marcher impec
/<img.*?(?<!\?)(?<!\/)>/ |
Marsh Posté le 18-10-2006 à 14:54:59
ReplyMarsh Posté le 18-10-2006 à 15:09:42
mIRROR a écrit : ha ben j ai compris pourquoi mes tests marchaient pas hier
|
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.
Marsh Posté le 18-10-2006 à 15:11:03
ReplyMarsh Posté le 18-10-2006 à 15:13:02
Chaos Intestinal a écrit : Et si son outil supporte pas les assertions arrières négatives ? |
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). |
Marsh Posté le 18-10-2006 à 15:28:34
anapajari a écrit : tu peux l'écrire comme ça c'est plus "clair":
|
ah oui j avais des tests avec des ou mais pareil j avais mis le ? avant le /
sinon je confirme testé chez moi et ca marche tres bien
en bonus jte fous ma string de test
Citation : 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris |
et la reponse
Array |
Marsh Posté le 18-10-2006 à 15:43:38
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
Marsh Posté le 18-10-2006 à 15:54:03
Code :
|
affiche:
array(1) { |
Marsh Posté le 18-10-2006 à 15:54:23
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... |
faudrait savoir
de toute facon ca marche quand meme
edit :
anapajari
Marsh Posté le 18-10-2006 à 18:04:43
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
Marsh Posté le 14-10-2006 à 10:36:35
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