UnderCore
Messages postés16Date d'inscriptiondimanche 28 mars 2004StatutMembreDernière intervention22 janvier 2008
-
21 janv. 2008 à 20:11
laxpo
Messages postés2Date d'inscriptionmercredi 18 août 2010StatutMembreDernière intervention18 août 2010
-
18 août 2010 à 03:04
Bien le bonjour/soir,
Ma requête concerne comme cité au-dessus la recherche d'information precise dans un document html/xhtml.
Mon maigre niveau de connaissance dans l'histoire du socket ne me permet que de récupéré la page en question, mes lacunes son au fait que je ne sache pas comment extraire de ce document uniquement ce qui m'intéresse.
En ayant explorer plusieurs source j'ai trouver (je suppose) qu'il faut utiliser la fonction $remove()
je poste la page en question, les informations que je veut récupéré sont celle-ci :
- X joueur connectés
- X GM connextée
- total X comptes sur le serveur
- total X personnages sur le serveur
- total X GM sur le serveur
Informations sur le serveur
Bakacraft Status est En ligne
[index.php?module= connectes Il y a 28 joueurs de connectés]
Il y a 2 GM de connectés
Il y au total 15580 comptes sur le serveur
Il y au total 14191 personnages sur le serveur
Il y au total 67 GM sur le serveur
<li>[index.php?module=armurerie L'armurerie]</li>
<li>[index.php?module=vente L'hôtel des ventes]</li>
<li>[index.php?module=gamers Les persos du serveur]</li>
<li>[index.php?module=info Information sur le serveur]</li>
<li>[map/map.php La carte des joueurs]</li>
<li>[index.php?module=connectes Les joueurs connectés]</li>
<li>[index.php?module=honneur Les points d'honneur]</li>
<li>[index.php?module=skill Talents des personnages]</li>
<li>[index.php?module=guildes Les guildes du serveur]</li>
<li>[index.php?module=teamspeak Notre serveur teamspeak]</li>
</li>
<li>[ Communauté]
<li>[ Forum]</li>
</li>
<li>[ Compte]
<li>[index.php?module=compte Créer un compte]</li>
</li>
Informations sur le serveur
Bakacraft Status est En ligne
[index.php?module =connectes Il y a 28 joueurs de connectés]
Il y a 2 GM de connectés
Il y au total 15580 comptes sur le serveur
Il y au total 14191 personnages sur le serveur
Il y au total 67 GM sur le serveur
Heure du serveur
19:58:17 21-janvier-2008
Serveur en ligne depuis :
00h20m01s
Warning: require(footer.php) [function.require]: failed to open stream: No such file or directory in C:\wamp\www\test\index.php on line 80
Fatal error: require() [function.require]: Failed opening required 'footer.php' (include_path='.;C:\php5\pear') in C:\wamp\www\test\index.php on line 80
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 21 janv. 2008 à 21:00
Tu aurais du donner le code que tu as déja actuelement pour qu'on puisse t'aidé..
Ici, un $remove, c'est franchement bourrin, le mieux c'est d'utiliser, sois un alias qui te supprime tout ce qui est contenu entre les balises (trouvable sur scriptsdb.org) et ensuite d'utiliser les token genre $gettok, sois un $regex :) :
en assumant que tu rempli le buffer avec une %var :
on *:sockread:nom:{
var %s | sockread %s
if ($regex(%s,/il y a (\d+) joueur/) echo -a \1 joueurs
elseif ($regex(%s,/il y a (\d+) GM/) echo -a \1 GM
elseif ($regex(%s,/il y au total (\d+) comptes/) echo -a \1 comptes total
elseif ($regex(%s,/il y au total (\d+) personnages/) echo -a \1 personnages total
elseif ($regex(%s,/il y au total (\d+) GM/) echo -a \1 GM total
}
cs_PaDa
Messages postés1804Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention22 septembre 20095 22 janv. 2008 à 12:56
Aucun souci ;)
Ton quote me parait correct à première vue (sans avoir testé donc), peut-être que mIRC gauffre à cause de la parenthèse qui suit "personnages total". Mais là on entre dans le côté sombre du parsing mIRC comme disait sax :-)
Bon courage !
Vous n’avez pas trouvé la réponse que vous recherchez ?
alias ssu {
sockclose ssu
sockopen ssu 82.243.193.106 60
}
on *:sockopen:ssu:{
sockwrite -n ssu GET http://82.243.193.106:60/test/index.php?module=info }
on *:sockread:ssu:{
var %s | sockread %s
if ($regex(%s,/il y a (\d+) joueur/) echo -a \1 joueurs
elseif ($regex(%s,/il y a (\d+) GM/) echo -a \1 GM
elseif ($regex(%s,/il y au total (\d+) comptes/) echo -a \1 comptes total
elseif ($regex(%s,/il y au total (\d+) personnages/) echo -a \1 personnages total
elseif ($regex(%s,/il y au total (\d+) GM/) echo -a \1 GM total
}
UnderCore
Messages postés16Date d'inscriptiondimanche 28 mars 2004StatutMembreDernière intervention22 janvier 2008 21 janv. 2008 à 21:19
Ah manque l'alias j'ai est trouver deux qui paraissent intéressent
le 1er
alias rembalise {
var %a, %tmp = $regsub($$1-,/(<.+>)/Ug,$null,%a)
if (!$prop) return %a
if ($prop == num) return %tmp
}
et le 2nd
alias regb {
; Si un paramêtre est manquant
if !$2 { halt }
; Savoir s'il y a du texte entre les-dites balises...
var %a = $regex($1,/< $+ $2 $+ >([^*]+)/i))
; Si l'on veut connaître le texte qui il y a entre les-dites balises...
if $prop text { var %a $regml(%a) }
; Retour du texte...
return %a }
UnderCore
Messages postés16Date d'inscriptiondimanche 28 mars 2004StatutMembreDernière intervention22 janvier 2008 22 janv. 2008 à 09:32
oui j'ai remarquer qu'un parenthèse était manquante, j'ai essayer de la mètre a la fin.
var %s | sockread %s
if ($regex(%s,/il y a (\d+) joueur/)) echo -a \1 joueurs
elseif ($regex(%s,/il y a (\d+) GM/)) echo -a \1 GM
elseif ($regex(%s,/il y au total (\d+) comptes/)) echo -a \1 comptes total
elseif ($regex(%s,/il y au total (\d+) personnages/)) echo -a \1 personnages total )
elseif ($regex(%s,/il y au total (\d+) GM/)) echo -a \1 GM total
cela ne fonctionne pas, j'ai bien essayer ailleurs. Je ne connaissais pas la fonction $regex avent hier soir
UnderCore
Messages postés16Date d'inscriptiondimanche 28 mars 2004StatutMembreDernière intervention22 janvier 2008 22 janv. 2008 à 13:36
Bien merci a vous deux pour votre aides en fait le code de Wims étrangement ne fonctionnai pas je me suis donc servi de son début de code avec ce que j'ai pu trouver sur le net.
Apres mes modification cela donne :
on *:sockread:ssu:{
var %s | sockread %s
if ($regex(%s,/Il y a (\d+) joueurs/i)) { set %jonline $regml(1) }
if ($regex(%s,/Il y a (\d+) GM/i)) { set %gmonline $regml(1) }
if ($regex(%s,/Il y a au total (\d+) comptes/i)) { set %comptetotal $regml(1) }
if ($regex(%s,/il y a au total (\d+) personnages/i)) { set %joueurtotal $regml(1) }
if ($regex(%s,/(\d+)h(\d+)m(\d+)s/)) { set %servup $regml(1) | set %servup1 $regml(2) | set %servup2 $regml(3) }
}
Bon évidement ce n'est pas parfait mais ça ma permis de remarquer que si la page contient un espace en trop le $regex ne fonctionne plus ( a mon point de vu d'amateur) et donc de corriger cette espace après quoi le code cité ci dessus fonctionne très bien pour son utilisation
cs_wims
Messages postés2466Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention 1 août 20101 22 janv. 2008 à 19:03
Le regex choper ce que tu lui dis de chopper donc c'est normal (pour l'espace).
Et pour expliquer le pourquoi du comment, si tu regardes ton premier post, on remarque des fautes dans la page elle même (plusieurs "il y au total" au lieu de "il y a au total") donc moi j'ai fait le regex en fonction des fautes, hormis les parenthèses de fin manquante,mon code étais juste je pense.
Si on regarde le nouveau code que tu donnes étant juste, tu as a corrigé la fautes dans le code, donc je suppose que dans la page elle même aussi...
A ce sujet, je sais pas si c'est un cas possible mais si tu n'as qu'un joueur et si la page renvoi "1 joueur" ton regex ne marchera plus car tu demandes de choppé "joueurs", cela est valable pour chaque infos que tu veux récupéré ^^
laxpo
Messages postés2Date d'inscriptionmercredi 18 août 2010StatutMembreDernière intervention18 août 2010 18 août 2010 à 03:02
bonjour je susi nouveau
j'ai un lv 39 s5 rolreia .je dit mon problème un joueur vien de me passer lfr+9 il a fait accepter et moij'ai fait pas mais lfr avec moi et autre joueur ma dit qu'il est un hackeur alo je deco pour me faire pas hacker et je con au ch4 j'etait en ch1 et il ma dit donne moi lfr ou je dit GM alor je deco encor j'ai changée mot de passe pour sécurité et quand je passe 2minute je veu con a mein2.fr me dit passe incorrecte et quand je veux avoir mot de passe par msn me dit ce compte et désactivé??
alor stp je veux rendre j'ai perdu un perso lv 45 et mnt je veu pas perdre ce compte stp du l'aide vite urgent je t'attend votre repponse stp..