[résolu] Expression regulière pour du HTML

WRInaute accro
J'ai une page html qui contient (entre autre), une div dont l'id est espace_contenu. L'objectif est de récupérer intégralement le contenu de cette div.

J'ai tenté ça :

Code:
preg_match('|<div class="espace_contenu">(.*)</div>|',$buffer,$out);

echo "<pre>";
print_r($out);
echo "<pre>";

Mais rien n'y fait (alors que $buffer contient bien tout le code html de ma page, dont cette fameuse div), mon tableau $out est désespérément vide.

Des idées ?
 
WRInaute accro
UsagiYojimbo a dit:
Bon j'ai fini par trouver :

Code:
preg_match_all('`\<div class="espace_contenu">([^[]+)\</div>`',$buffer,$out);

Tu ferais probablement mieux d'utiliser un vrai parser HTML... Si jamais quelqu'un glisse un DIV à l'intérieur de celui-là, ça ne marchera plus.

Par ailleurs j'avoue que ta regex m'échappe un peu... Je ne vois pas bien pourquoi tu as des quotes à l'intérieur de ta regex, ni pourquoi tu escapes les <, et je ne vois pas non plus pourquoi tu veux "tout sauf [" à l'intérieur. J'ai tendance à penser qu'elle ne va vraiment pas marcher à tous les coups ta regex.

Je pense que ta première regex, sans les "|" à chaque bout dont je ne sais pas très bien ce qu'ils viennent faire là, est probablement plus efficace, en fait, non?

Jacques.
 
WRInaute passionné
jcaron a dit:
Je pense que ta première regex, sans les "|" à chaque bout dont je ne sais pas très bien ce qu'ils viennent faire là, est probablement plus efficace, en fait, non?

Jacques.

C'est vrai que moi-même, ne comprend pas trop ce qu'il veut.

Pour ce qui est des « | », c'est normal ; je me sert de # et pendant longtemps de cela : /.
C'est le délimiteur du masque.
 
WRInaute accro
autre soluce :

$buffer = eregi_replace("^.*<div class=\"espace_contenu\">","",$buffer);
$buffer = eregi_replace("</div>.*$","",$buffer);

enlever ce qu'il y a avant et après ...
 
Discussions similaires
Haut