|
Publicité | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Inscription : février 2006 Messages : 487 ![]() |
Bonjour,
Je souhaiterais à partir d'un fichier HTML, extraire tout le texte qui existe sur la page. Est-ce qu il y a des algos, des fonctions que vous me conseillez pour faire cela? A titre d'exemeple, si j'ai : Code :
mon site ok Je pensais essayer de détecter tous les textes entre "> < ". Est-ce une bonne idée? |
||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : février 2006 Messages : 487 ![]() |
Il semblerait que la meilleure solution soit d'utiliser les expressions régulières avec preg_match?
Quelqu'un peut me confirmer ca? |
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() Inscription : janvier 2004 Messages : 419 ![]() |
Sinon, tu as tidy, si l'extension est installée sur ton serveur :
http://fr2.php.net/manual/fr/function.tidy-get-body.php |
|
|
00
|
|
|
#4 | ||
|
Membre confirmé
![]() Inscription : février 2006 Messages : 487 ![]() |
Non elle ne l'est pas
J'ai une question sur l'utilisation des expression regulières la... Code :
merci |
||
|
|
00
|
|
|
#5 | ||
|
Membre confirmé
![]() Inscription : février 2006 Messages : 487 ![]() |
Bonjour,
mmm j'ai du mal avec les expressions régulières :s Code :
j'ai donc essayé : Code :
eregi("<META NAME=\"description\"(.*)CONTENT=\"(.*)>(\n\r)$",$line,$metadesc); Si je retire le \n\r$ je récupère plus d'une ligne :s Je continue de regarder mais si quelqu'un peut m'aider Merci |
||
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : février 2006 Messages : 487 ![]() |
J'ai plus ou moins résolu le problème des metas en supposant qu'une page est bien écrite c'est à dire que c'est de la forme
Mon problème vient maintenant du texte dans le body... Ce que je faisais pour les métas, c'est de tester en lisant le fichier avec file() mais la je ne pourrai pas dans le body... Je suis, il me semble, obligé de garder tout ce qu il y a entre <body> et </body> Ensuite, j'aurai bien voulu, dans un premier temps, repéré ce qui se trouve entre <td...>texte</td> J'ai donc fait : Code :
eregi("<td(.*)>(.*)(</td>?)",$text,$regtext); Merci! |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 127 ![]() |
Code :
preg_match_all("#<td[^>]*>(.*)</td>#Ui",$texte,$resultat);
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#8 | ||
|
Membre confirmé
![]() Inscription : février 2006 Messages : 487 ![]() |
Merci
J'ai changé mon fusil d'épaule entre temps en fait Je vais récupérer tout ce qu il y a entre les '>' et '<' Code :
mais bon j'ai l'impression que j'ai un petit prob :d Code :
if(preg_match_all('|<body[^>]*>[^</body>]*</body>|i',$text,$matches)); |
||
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 127 ![]() |
Code :
preg_match_all('#<body[^>]*>.*</body>#i',$text,$matches);
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#10 |
|
Membre confirmé
![]() Inscription : février 2006 Messages : 487 ![]() |
oui c'est vrai que le if pas tres utile pour le moment
Merci pour le ^ Question... Ca existe un preg_match_all insensible à la casse? Parce que je suppose que si un site mais <BODY> a la place de <body> mon script va pas apprécié :s |
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 127 ![]() |
ca donne insensible à la casse ...
et sinon pour connaitre les autres : http://fr.php.net/manual/fr/referenc....modifiers.php Voila !!
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Inscription : février 2006 Messages : 487 ![]() |
Merci
Heu ... mm comment dire, petit soucis ... je récupère beaucoup trop d'espace c'est à dire que j'ai des choses comme : mon texte texte2 il y a une fonction qui supprime les espaces en trop ? |
|
|
00
|
|
|
#13 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 127 ![]() |
trim()
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#14 |
|
Membre confirmé
![]() Inscription : février 2006 Messages : 487 ![]() |
Merci maître Maxoo
|
|
|
00
|
|
|
#15 | |||
|
Membre régulier
![]() Inscription : novembre 2004 Messages : 114 ![]() |
Citation:
Ici $text représente quoi? c'est bien le chemin du fichier non? Faut il encore utiliser le code d'ouverture la ? Code :
|
|||
|
|
00
|
|
|
#16 | ||
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 127 ![]() |
Bien sur il faut que tu ouvres quand meme ton fichier,
tu récuperes tout dans $line, tu passes le regexp sur $line, et apres tu vois dans $matches ou se cachent les bon résultats ... Code :
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
||
|
|
00
|
|
|
#17 | ||
|
Membre régulier
![]() Inscription : novembre 2004 Messages : 114 ![]() |
oui en effet ca fonctionne bien
Code :
EDIT : je n avais pas vu ton message je corrige mon initialisation EDIT2 : très pratique le print_r on voit la position dans le tableau c'est très pratique Merci |
||
|
|
00
|
|
|
#18 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 127 ![]() |
sujet résolu ?
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#19 |
|
Membre régulier
![]() Inscription : novembre 2004 Messages : 114 ![]() |
Oui résolu merci
Désolè j avais oublié |
|
|
00
|
|
|
#20 | ||
|
Membre chevronné
![]() ![]() |
Désolé si je réveille un peu les morts, mais ce message m'a intéressé, donc je complète, ou plutôt j'actualise :
Il n'est pas nécessaire de parser le fichier ligne à ligne, mais on peut simplement utiliser la fonction file_get_contents, par exemple : Code :
Et à noter qu'il existe maintenant de bons parsers HTML (exemple $html = new DOMDocument(); ). Voila. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com