Parsing PHP

loicderennes -  
Alkaaran Messages postés 291 Statut Membre -
Bonjour,
J'aimerais parser une page html. J'ai réussi a parser une probleme, le seul problème c'est que dès qu'il me trouve la première chaine de caractère, il s'arrete alors que moi, j'aimerais avoir la liste de toute les chaines qui répondent à mes conditions.

Seul le reg[1] fonctionne, les autres ne donne rien.
Pouvez m'aider?

Encore merci

Loic

[code]
<?php

//Je récupère la page que je veux parser
$fp = fopen("C:\Documents and Settings\Loïc\Bureau\SGBD\copie de www_fftt_com - Classement.htm","r"); //lecture du fichier
while (!feof($fp)) { //on parcourt toutes les lignes
$page .= fgets($fp, 4096); // lecture du contenu de la ligne
}

$titre = eregi("//<td ALIGN='LEFT' bgcolor='#EBEBEB'><font size=2><a href='([^']*)>",$page,$regs); //on isole la partie du texte qui m'interesse
echo $regs[0];echo "<br>" ;
echo $regs[1];echo "<br>" ;
echo $regs[2];
echo "<br>" ;
echo $regs[3];





fclose($fp);

?>
</body>
</html>
/code
A voir également:

5 réponses

Alkaaran Messages postés 291 Statut Membre 37
 
http://fr3.php.net/manual/fr/function.eregi.php

Sur cette page on t'explique le fonctionnement de la fonction eregi(), notamment :
regs

Si des correspondances sont trouvées pour les sous-masques entre parenthèses de pattern et que la fonction est appelé avec le troisième argument regs , les correspondances seront stockées dans des éléments du tableau regs .

$regs[1] contiendra la sous-chaîne qui commence à la première parenthèse la plus à gauche ; $regs[2], la seconde, et ainsi de suite. $regs[0] contiendra une copie complète de la chaîne.


Pour voir ce que contient le tableau $regs, n'hésite pas à écrire à la fin de ton code :
echo '<pre>';
var_dump( $regs ) ;
echo '</pre>' ;
0
loicderennes
 
bonjour,
oui j'etais deja tombé sur cette page en faisant mes recherches.. (ca fait plus de 8h que je suis dessus et je commence a peter un cable.. lol)

Lorsque je mets ton code, voici ce qu'il y a dans l'array :

array(2) {
[0]=>
string(129) "<a href='FFTTfi.php3?session=precision%3D3510422%26reqid%3D200&cler=LEQbG60iZDWZw"
[1]=>
string(72) "FFTTfi.php3?session=precision%3D3510422%26reqid%3D200&cler=LEQbG60iZDWZw"
}


cependant, la page qu'il scane, il y a au moins 25 chaines de caractère qui correspont au masque... Il doit vraiment s'arreter a partir du moment qu'il a trouver la première chaine. N'y aurait il pas possibilité de faire une chaine ou quelque chose comme ca?
0
Alkaaran Messages postés 291 Statut Membre 37
 
Et tu est bien sur qu'il y a plusieurs motifs qui se repetent ?

Si tu pouvais onner l'HTML a parser ca serait pas mal aussi :-)
0
loicderennes
 
Voici la page que j'essaie de parser :

http://fftt.com/sportif/pclassement/php3/FFTTlj.php3?session=position%3D47%26action%3DRetour%26reqid%3D211%26precision%3D07350122%26precision2%3D


Dans l'exemple je l'ai enregister en local et oui, je suis sur, enfin je pense, qu'il y a 25 autres chaines de caractère correspondant. Vous pouvez essayer si vous voulez.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alkaaran Messages postés 291 Statut Membre 37
 
Il est 01h30 du mat'.. mais j'ai vaincu !! :)

<?php

//Je récupère la page que je veux parser
$fp = fopen("http://fftt.com/sportif/pclassement/php3/FFTTlj.php3?session=position%3D47%26action%3DRetour%26reqid%3D211%26precision%3D07350122%26precision2%3D","r"); //lecture du fichier
while (!feof($fp)) { //on parcourt toutes les lignes
$page .= fgets($fp, 4096); // lecture du contenu de la ligne
}

preg_match_all("`href='([^']*)'`",$page,$matches); //on isole la partie du texte qui m'interesse

for( $i=0; $i< count($matches[0]) ;$i++)
	echo $matches[0][$i].'<br />' ;

fclose($fp);

?> 


Alors je ne sais pas pourquoi il me retourne un tableau multidimensions, mais bon jsuis trop fatigué a cette heure-ci pour en découvrir la cause :p
0