Bonjour à tous,
depuis ce matin je suis sur un "problème"? de regex sur du code source html ...
Bon, déjà, le regex c'est pas si simple en JS mais bon, je suis obligé, et bien ca fait bosser un peu
Je suis en train de creer un script GreaseMonkey qui avec le code source de la page courante :
je veux récupérer une multitude d'info, pour être précis 50*6.
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.body.innerHTML
Voici mon code JS :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 var ok = true; var all_user = /<input type='hidden' name='do' value='delete'>(.*?)<BR><input type='button'/g.exec(document.body.innerHTML); var all_user4 = document.body.innerHTML.match(/<input type='hidden' name='do' value='delete'>([\s\S]*?)<BR><input type='button'/m); var all_user2 = /<li class="index"><a href="index.php"><span>(.*?)<li class="forums"><a href="forums.php"><span>/g.exec(document.body.innerHTML); var all_user3 = /<li class="index"><a href="index.php"><span>/.exec(document.body.innerHTML); var string = document.body.innerHTML; var regex = /<input type='hidden' name='do' value='delete'>([\s\S]*?)<\/table><BR><input type='button' value='Check All' onclick='this\.value=check\(form\)'>/g; console.log( regex.exec(string) ); // Console Firebug for (j=1; j<=50; j++){ var user = /<tr>(.*?)<\/tr>/.exec(all_user); var var1 = /<a href=dtls.php\?id=[0-9]+>(.*?)<\/a>/.exec(user); var var2 = /<td class=table_col2 align=center>(.*?)<\/td>/.exec(user); var var3= /<td class=table_col1 align=center>(.*?)<\/td>/.exec(user); var var4= /<td class=table_col2 align=center>(.*?)<\/td>/.exec(user); var var5= /<td class=table_col1 align=center>(.*?)<\/td>/.exec(user); var var6 = /<td class=table_col2 align=center>(.*?)<\/td>/.exec(user); if (ok) { alert(var1+ " " + var2+ " " + var3+ " " + var4+ " " + var5+ " " + var6); ok = false; } //file.WriteLine(var1+ " " + var2+ " " + var3+ " " + var4+ " " + var5+ " " + var6); //ActiveXObject ne marche pas sous FF } //}
Mon code source qui m'interesse ici est de cette tête :
bref, voilà, je veux récup les VARx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <form action='test.php?ok=users' method='POST'><input type='hidden' name='do' value='delete'> <tr><td class=table_col1 align=center><a href=dtls.php?id=128895>VAR1</a></td> <td class=table_col2 align=center>VAR2</td> <td class=table_col1 align=center>VAR3</td> <td class=table_col2 align=center>VAR4</td> <td class=table_col1 align=center>VAR5</td> <td class=table_col2 align=center>VAR6</td> <td class=table_col1 align=center><input type=checkbox name='userids[]' value='128895'></td> </tr> <tr><td class=table_col1 align=center><a href=dtls.php?id=12895>VAR1</a></td> <td class=table_col2 align=center>VAR2</td> <td class=table_col1 align=center>VAR3</td> <td class=table_col2 align=center>VAR4</td> <td class=table_col1 align=center>VAR5</td> <td class=table_col2 align=center>VAR6</td> <td class=table_col1 align=center><input type=checkbox name='userids[]' value='12895'></td> </tr> ETC
Alors j'ai commencé à écrire un truc. Il y a une partie dont je ne suis pas sur, c'est ca :
Je ne sais pas si ca capture bien ce que je veux puisque "<td class=table_col2 align=center>" n'est pas unique ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 var var1 = /<a href=dtls.php\?id=[0-9]+>(.*?)<\/a>/.exec(user); var var2 = /<td class=table_col2 align=center>(.*?)<\/td>/.exec(user); var var3 = /<td class=table_col1 align=center>(.*?)<\/td>/.exec(user); var var4 = /<td class=table_col2 align=center>(.*?)<\/td>/.exec(user); var var5 = /<td class=table_col1 align=center>(.*?)<\/td>/.exec(user); var var6 = /<td class=table_col2 align=center>(.*?)<\/td>/.exec(user);
Mais c'est pas ici que je coince pour le moment, mais ici :
Il me renvoie NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var string = document.body.innerHTML; var regex = /<input type='hidden' name='do' value='delete'>([\s\S]*?)<\/table><BR><input type='button' value='Check All' onclick='this\.value=check\(form\)'>/g; console.log( regex.exec(string) ); // Console Firebug
Une idée ? (ca doit pas être très compliqué, mais j'ai absuloment rien trouvé sur le net)
PS : y a des testes dans mon js : all_usersX
Partager