Parsing PHP
                                    
                        loicderennes                    
                                    -
                                     
Alkaaran Messages postés 291 Statut Membre -
        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
                
            
                
    
    
    
        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:         
- Parsing PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Retour à la ligne php ✓ - Forum PHP
- Alert php - Forum PHP
5 réponses
                        
                    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 :
    
                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>' ;
                        
                    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?
    
                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?
                        
                    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 :-)
    
                Si tu pouvais onner l'HTML a parser ca serait pas mal aussi :-)
                        
                    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.
    
                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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
                        
                    Il est 01h30 du mat'.. mais j'ai vaincu !! :)
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
    
                <?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
