OVH Cloud OVH Cloud

regex

3 réponses
Avatar
Steph. k.
Bonjour tlm,

Je voudrais détecter, en parsant un fichier, si un formulaire contenu
dans la page fait appel à du javascript pour pouvoir afficher un
avertissement. J'en suis là :
preg_match('`<form(.*?)(onclick|onsubmit)(.*?)/form>`i',$html)
mais hélas ca ne marche pas et retourne tjs false même si le motif se
trouve dans la page.

Tant que je suis là j'ai une autre regex qui me fait un truc bizarre :
preg_match("`alt\s?=\s?("(.*)?(\.png|\.jpg|\.jpeg|\.gif)"|'(.*
)?(\.png|\.jpg|\.jpeg|\.gif)')`i",$html[$i])
Ca marche nickel avec une balise image comme cela :
<img src="http://mon_imge.gif" alt="mon_imge.gif" />
mais pas si j'inverse les attributs :
<img alt="mon_imge.gif" src="http://mon_imge.gif" />
Cette dernière regex détecte si le text de l'attribut alt ne correspond
pas bêtement au non de l'image.
C'est pour un validateur d'accessibilité visible et testable ici :
http://www.acces-pour-tous.net/outils_php/verif_prio1.php
Par avance merci,

--
Steph. K.

3 réponses

Avatar
P'tit Marcel
Steph. k. écrivit:

Je voudrais détecter, en parsant un fichier, si un formulaire contenu
dans la page fait appel à du javascript pour pouvoir afficher un
avertissement. J'en suis là :
preg_match('`&lt;form(.*?)(onclick|onsubmit)(.*?)/form&gt;`i',$html)

preg_match("`alts?=s?(&quot;(.*)?(.png|.jpg|.jpeg|.gif)&quot;|'(.*
)?(.png|.jpg|.jpeg|.gif)')`i",$html[$i])



rien compris. Pourquoi ya t'il des &gt; &lt; et &quote; dans ton expression
? le | tout seul me semble aussi bizarre...

--
P'tit Marcel
statistiques sur les forums modérés : http://www.centrale-lyon.org/ng/

Avatar
Steph. k.
P'tit Marcel wrote:
Steph. k. écrivit:

Je voudrais détecter, en parsant un fichier, si un formulaire contenu
dans la page fait appel à du javascript pour pouvoir afficher un
avertissement. J'en suis là :
preg_match('`&lt;form(.*?)(onclick|onsubmit)(.*?)/form&gt;`i',$html)


rien compris. Pourquoi ya t'il des &gt; &lt; et &quote; dans ton
expression ?


Parce que je passe d'abord $html avec htmlEntities(), un petit exemple
de ce que j'aimerais :

<form action="toto.php">
Votre nom : <input type="text" name="nom" size="40">
<input type="submit" value="Envoyer">
</form>
Doit retourner FALSE

<form action="toto.php" onsubmit="return validation();return false;">
Votre nom : <input type="text" name="nom" size="40">
<input type="submit" value="Envoyer">
</form>
Doit retourner TRUE

<form action="toto.php" >
Votre nom : <input type="text" name="nom" size="40">
<input type="submit" value="Envoyer" onclick="return validation();return
false;">
</form>
Doit retourner TRUE

le | tout seul me semble aussi bizarre...

preg_match("`alts?=s?(&quot;(.*)?(.png|.jpg|.jpeg|.gif)&quot;|'(.*
)?(.png|.jpg|.jpeg|.gif)')`i",$html[$i])

Là je parse le fichier ligne par ligne et je voudrais afficher un
message d'alerte uniquement si l'attribut alt d'une balise <img...>
contient le nom de l'image (je recherche donc la présence d'une
extension correspondant à une image.
Pour la regex, voilà mon raisonnement (faux puisque sensible à la
position du alt au sein de la balise <img>), je cherche si $html[$i]
contient le nom du fichier image (extension gif ou jpg ou jpeg ou png).
Comme c'est une erreur courante j'accepte alt="..." aussi bien que
alt='...'
Voilà, j'espère que c'est plus clair maintenant.


--
Steph. K.
http://www.acces-pour-tous.net


Avatar
Steph. k.
Steph. k. wrote:

Je voudrais détecter, en parsant un fichier, si un formulaire
contenu dans la page fait appel à du javascript pour pouvoir
afficher un avertissement. J'en suis là :




J'ai trouvé, il me manquait le s en parametre pour que cela fonctionne :

'`(.*?)&lt;forms(.*?)(onclick|onsubmit|onfocus|onchange)(.*?)&lt;/form&
gt;(.*?)`is'

--
Steph. K.
http://www.acces-pour-tous.net