Bonjour
Quelle est la meilleure facon de lire du code html entre deux balises?
J'ai trouvé cette solution:
mais selon vous, est-ce une bonne idée, et est-ce la meilleure?Code:preg_match('/<body>(.*?)<\/body>/s', $data, $matches);
merci
Version imprimable
Bonjour
Quelle est la meilleure facon de lire du code html entre deux balises?
J'ai trouvé cette solution:
mais selon vous, est-ce une bonne idée, et est-ce la meilleure?Code:preg_match('/<body>(.*?)<\/body>/s', $data, $matches);
merci
Bonjour,
Pour parser du HTML cest DOMDocument
Tout autre idée est une hérésie.
stealth35 sort de ce corps :ptdr:
ok merci
mais comment puis-je convertir du html en xml?
Je veux par exemple récupérer le texte qui se trouve dans la balise
<p align="justify"> de ce lien html:
view-source:http://www.lygeros.org/5715-gr.html
Ce que tu souhaites faire relève du data-mining et il vaut mieux avoir l'autorisation du site ciblé.
Ensuite le HTML est déjà du XML.
Pour la sélection du paragraphe voulu c'est du DOMXPath.
Comme ça :
Enfin un truc de ce genre.Code:
1
2
3
4
5
6
7
8
9
10
11
12 $data = file_get_contents('http://www.lygeros.org/5715-gr.html'); if ($data === false) { exit; } $dom = new DOMDocument(); $dom->loadHTML($data); $xpath = new DOMXPath($dom); $nodes = $xpath->query('p[@align="justify"]'); foreach($nodes as $node) { $txt = $node->textContent; }
C'est mon propre site.Citation:
Ce que tu souhaites faire relève du data-mining et il vaut mieux avoir l'autorisation du site ciblé.
merci je regardeCitation:
Pour la sélection du paragraphe voulu c'est du DOMXPath.
en fait, voici ce que je veux faire.
J'ai des fichiers sur un site web qui résultent d'une mauvaise utilisation du php. Il se présentent sous cette forme:
Les balises hauti permettent d'injecter le code html.
Ce qui donne ceci:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 <? include ('hauti.inc'); ?> Chant dhonneur <? include ('hauti2.inc'); ?> Chant dhonneur <? include ('hauti3.inc'); ?> 2013 <? include ('hauti4.inc'); ?> Nous écoutions le chant dantan<br/> comme si cétait une prière.<br/> Nous aimions ces sonorités<br/> ......... <? include ('hauti5.inc'); ?>
http://www.lygeros.org/2013-fr.php
Je voudrais paser les fichiers pour récupérer le texte qui se trouvent entre les balises <?...?>. Mais je ne vois pas trop comment faire. Utiliser des regex?
J'ai voulu faire ceci:
Qu'en pensez vous? Je pense qu'il risque d'y avoir un problème s'il y a des points d'interrogation dans le texte.Code:$texte=preg_split("/[\s]*[<?*?>][\s]*/", $texte);
De plus j'aimerais aussi récupérer le nom des balises (hauti5, hauti1...) pour savoir à quoi j'ai affaire
Merci
Hello, déjà pour matcher du contenu entre deux balises, il serait bon d'utiliser l'option "U" si plusieurs balises existent dans ton texte.
Il faut échapper les ?.
Ensuite ta regex ne me semble pas très adaptée à ce que tu veux faire. Moi j'aurais plutôt utilisé ça :
Et tu récupères tes résultats dans le tableau $TabResultats[1]Code:preg_match_all('#<\?(.*)\?>#Us', $texte,$TabResultats);
De quelles balises parles-tu ? (hauti1,...)