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:document.body.innerHTML
Voici mon code JS :
Code:
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 VARxCode:
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:
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:
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