|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Date d'inscription: février 2006
Messages: 389
|
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 :
<head> <title> mon site </title></head> <body> ok </body> mon site ok Je pensais essayer de détecter tous les textes entre "> < ". Est-ce une bonne idée? |
|
|
|
|
|
#2 |
|
Membre éclairé
![]() Date d'inscription: février 2006
Messages: 389
|
Il semblerait que la meilleure solution soit d'utiliser les expressions régulières avec preg_match?
Quelqu'un peut me confirmer ca? |
|
|
|
|
|
#3 |
|
Membre éprouvé
![]() Date d'inscription: janvier 2004
Localisation: Paris
Âge: 37
Messages: 402
|
Sinon, tu as tidy, si l'extension est installée sur ton serveur :
http://fr2.php.net/manual/fr/function.tidy-get-body.php |
|
|
|
|
|
#4 |
|
Membre éclairé
![]() Date d'inscription: février 2006
Messages: 389
|
Non elle ne l'est pas
J'ai une question sur l'utilisation des expression regulières la... Code :
$filehandle=fopen('index.html','r'); while(!feof($filehandle)) { $line.=fgets($filehandle, 500); // Max 500 chars } $titre = eregi("<title>(.*)</title>",$line,$regs); echo $regs[0]; merci |
|
|
|
|
|
#5 |
|
Membre éclairé
![]() Date d'inscription: février 2006
Messages: 389
|
Bonjour,
mmm j'ai du mal avec les expressions régulières :s Code :
<META NAME="description" CONTENT="Publicité on line, Bases de données, commerce électronique ? Adverland : un interlocuteur unique pour monétiser votre audience"> <META NAME="keywords" CONTENT="réseau,publicité,campagne publicitaire,CPM,campagnes,annonceur,annonceurs,editeurs,éditeurs, publicitaires,rentabilisez,rentabiliser,rentabilise,publicité on line,bases de données,commerce électronique,audience,régie, online,publicite, marketing,emailing,e-mailing, wap, banniere,bannière,affiliation,reseau,regie,CB ,carte bleue,sms,sms+,wh,w-ha,audiotel,micropaiement"> <META NAME="classification" CONTENT="REGIE PUBLICITAIRE,MARKETING,COMMERCE ELECTRONIQUE,AFFILIATION"> 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 |
|
|
|
|
|
#6 |
|
Membre éclairé
![]() Date d'inscription: février 2006
Messages: 389
|
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
Code :
<Meta name = ...> <Meta Name = > 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! |
|
|
|
|
|
#7 |
![]() Date d'inscription: novembre 2004
Localisation: Nantes
Âge: 26
Messages: 2 165
|
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 |
|
|
|
|
|
#8 |
|
Membre éclairé
![]() Date d'inscription: février 2006
Messages: 389
|
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 :
/* if(preg_match_all('|>[^<]+<|i',$text,$matches))*/
mais bon j'ai l'impression que j'ai un petit prob :d Code :
if(preg_match_all('|<body[^>]*>[^</body>]*</body>|i',$text,$matches)); |
|
|
|
|
|
#9 |
![]() Date d'inscription: novembre 2004
Localisation: Nantes
Âge: 26
Messages: 2 165
|
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 |
|
|
|
|
|
#10 |
|
Membre éclairé
![]() Date d'inscription: février 2006
Messages: 389
|
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 |
|
|
|
|
|
#11 |
![]() Date d'inscription: novembre 2004
Localisation: Nantes
Âge: 26
Messages: 2 165
|
Code :
#i
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 |
|
|
|
|
|
#12 |
|
Membre éclairé
![]() Date d'inscription: février 2006
Messages: 389
|
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 ? |
|
|
|
|
|
#13 |
![]() Date d'inscription: novembre 2004
Localisation: Nantes
Âge: 26
Messages: 2 165
|
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 |
|
|
|
|
|
#14 |
|
Membre éclairé
![]() Date d'inscription: février 2006
Messages: 389
|
Merci maître Maxoo
|
|
|
|
|
|
#15 | |
|
Membre régulier
![]() Date d'inscription: novembre 2004
Localisation: Lorraine/Luxembourg
Âge: 26
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 :
$filehandle=fopen('index.html','r'); while(!feof($filehandle)) { $line.=fgets($filehandle, 500); // Max 500 chars } $titre = eregi("<title>(.*)</title>",$line,$regs); echo $regs[0]; |
|
|
|
|
|
|
#16 |
![]() Date d'inscription: novembre 2004
Localisation: Nantes
Âge: 26
Messages: 2 165
|
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 :
$filehandle=fopen('index.html','r');
$line = "";
while(!feof($filehandle))
{
$line.=fgets($filehandle, 500); // Max 500 chars
}
preg_match_all('#<body[^>]*>.*</body>#i',$line,$matches);
print_r($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 |
|
|
|
|
|
#17 |
|
Membre régulier
![]() Date d'inscription: novembre 2004
Localisation: Lorraine/Luxembourg
Âge: 26
Messages: 114
|
oui en effet ca fonctionne bien
Code :
//Ouverture du fichier $line=""; $filehandle=fopen($filename,'r'); while(!feof($filehandle)) { $line.=fgets($filehandle,500); // Max 500 chars } preg_match_all('#<span[^>]*>.*</span>#i',$line,$matches); foreach ($matches as $val){ echo $val[0]."<br/>"; echo $val[1]."<br/>"; echo $val[2]."<br/>"; echo $val[3]."<br/>"; echo $val[4]."<br/>"; } 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 |
|
|
|
|
|
#18 |
![]() Date d'inscription: novembre 2004
Localisation: Nantes
Âge: 26
Messages: 2 165
|
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 |
|
|
|
|
|
#19 |
|
Membre régulier
![]() Date d'inscription: novembre 2004
Localisation: Lorraine/Luxembourg
Âge: 26
Messages: 114
|
Oui résolu merci
Désolè j avais oublié |
|
|
|
|
|
![]() |
||
[PHP] Parser d'une page HTML pour récupération du texte
|
||
| Outils de la discussion | |
|
|