logo Homepage
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [PHP] parcourir une page et récupérer des données dessus  (Lu 4858 fois)
Snake046
Invité
« le: 29 Octobre 2006 à 08:29:42 »

Bonjour bonjour !

Je me suis remis dans la tête de créer un programme en PHP pour faciliter le recrutement sur le jeu Heroes Chronicle, maintenant que je maitrise beaucoup mieux le PHP.

Le sujet que j'avais commencé à disparu, donc je reprend avec un nouveau.

Je veux ouvrir une page web : http://heroesofwarcraft.nainwak.org/classement.php?page=$page&rac=&ori=&user=
Chaque fois qu'on aura fini avec une page, la variable $page s'incrémentera de un jusqu'à ce que $page soit également à 200.


Je dois donc séparer toutes les lignes pour les analyser séparement, sachant qu'il y a 24 lignes par page. On obtiens alors ceci :

Citation
<tr>
   <td align="center" class=content><center><b><font color=red>Classement</font></b></center></td>
   <td align="center" class=content><center>Clan</center></td>

   <td align="center" class=content><center><A href="javascript:OuvrirPopup('perso/infos.php?joueur=Halo12','','resizable=no,top=100, left=250, location=no,width=520,height=500,menubar=no,status=no,scrollbars=yes,menubar=no')">Nom</A></center></td>
   <td align="center" class=content>60 (4)</td>
   <td align="center" class=content><center>equilibre</center></td>
   <td align="center" class=content><img src="map/race.jpg"></font></td>
   </tr>
A chaque fois, si classsement != GELE, si clan == "", si race != ..., il faut echo le nom plus un point virgule. (jusqu'à avoir récupérer 10 noms, dans ce cas on fait <br />)


Mon problème dans ce script, c'est que classement, nom, race... ça n'est pas le même nombre de caractère. Il faudrait pouvoir les baliser le truc. Savez-vous comment je pourrais m'y prendre ?
Journalisée
Nebelmann

Profil challenge

Classement : 470/55046

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1357


Voir le profil
« #1 le: 29 Octobre 2006 à 08:54:07 »

une expression régulière, du type "    <td align="center" class=content><center>(.*)</center></td>"
mais à faire valider par quelqu'un qui s'y connait mieux que moi ^^

http://fr3.php.net/manual/fr/function.preg-match.php
Journalisée

-- Nebelmann -- Registered linux user #429186
«Si les lecteurs étaient des compilateurs, les posteurs feraient peut-être davantage attention à ce qu'ils écrivent...»
Snake046
Invité
« #2 le: 29 Octobre 2006 à 13:38:15 »

Je trouve qu'ils expliquent pas vraiment bien sur PHP.NET
Je veux dire par là que leur explication de la syntaxe est très technique et franchement pour moi, de tout ce que j'ai vu sur PHP.NET, je crois bien que je n'ai jamais rien compris quand c'était eux qui m'expliquaient (dès fois je me suis même mis à croire que je manipulais mal certaines fonctions alors qu'en fait je le faisais très bien).
Exemple :
Citation
Si matches est fourni, il sera rempli par les résultats de la recherche. $matches[0] contiendra le texte qui satisfait le masque complet, $matches[1] contiendra le texte qui satisfait la première parenthèse capturante, etc.
C'est quoi leur première parenthèse capturante à eux ?


La fonction c'est donc preg_match(); .
Et il faut y rentrer les arguments string pattern, string subject...
et à partir de là j'y comprend plus rien : "[, array &matches [, int flags [, int offset]]] "
Pourquoi des crochets, pourquoi des virgules dans les crochets, pour quoi un & devant matches, c'est qui int flags, c'est quoi int offset ?


Citation
Normalement, la recherche commence au début de la chaîne subject. Le paramètre optionnel offset peut être utilisé pour spécifier une position pour le début de la recherche. Le paramètre offset a été introduit depuis la version 4.3.3 de PHP.
Et dans l'exemple on a
Citation
$subject = "abcdef";
Est-ce que ça veux dire que la chaîne commencera dès qu'il trouvera dans la variable qu'on lui donne "abcdef".

D'ailleurs, je me rend compte que je ne comprend même pas comment on lui dit dans quelle variable il dois aller faire sa recherche.
Journalisée
the lsd
Administrateur

Profil challenge

Classement : 183/55046

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3098

poulping for fun & profit


Voir le profil WWW
« #3 le: 29 Octobre 2006 à 14:12:07 »

Site du zero !!! Ya que ca de vrai ! Meme pour les regex ! C'est la que je les ai appris !
(Bon d'accord j'ai galeré pendant 5 heures hier a cause d'un + et d'un . et alors !!!)


Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
zours

Profil challenge

Classement : 555/55046

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 811


Voir le profil
« #4 le: 29 Octobre 2006 à 16:23:18 »

The lsd, bwahahahahah !!!!
Comment ça je me fous de toi ? Mais non voyons, j'ai partagé ta peine minute après minute ! Quoi ? C'est pas crédible ? Bon, bon...
Journalisée
Nebelmann

Profil challenge

Classement : 470/55046

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1357


Voir le profil
« #5 le: 29 Octobre 2006 à 17:50:01 »

Citation
et à partir de là j'y comprend plus rien : "[, array &matches [, int flags [, int offset]]] "
Je vais t'apprendre un truc qui te servira toute ta vie : les crochets dans un synopsis (c'est comme ça qu'on appelle comment utiliser un prog ou une fonction) veulent dire que le paramètre est optionnel !! Et si les crochets sont imbriqués, ça veut dire que par exemple si tu veux utiliser flags tu es obligé d'utiliser matches avant.

Le & devant array veut dire que tu passes la variable par référence, afin que la fonction preg_matches puisse le modifier et que tu aies encore les modifications une fois la fonction terminée (sinon, sans le & tu fais un passage par valeur, et les modifications faites dans la fonction ne se répercuteront pas dans le code qui a appelé cette fonction => http://www.manuelphp.com/php/language.references.pass.php)

Les parenthèses capturantes te permettent de récupérer les valeurs que tu désires dans ton expression régulière :
Code:
preg_match("newbie contest est magnifique", "/^(.*) est (.*)$/", $tableau);
// $tableau[0] == "newbie contest"
// $tableau[1] == "magnifique"
Journalisée

-- Nebelmann -- Registered linux user #429186
«Si les lecteurs étaient des compilateurs, les posteurs feraient peut-être davantage attention à ce qu'ils écrivent...»
Pages: [1]
  Imprimer  
 
Aller à: