Page 1 sur 1

preg_match_all + paramettre

Posté : 30 avr. 2007, 13:14
par jeanmed
Bonjour

je cherche à extraitre une partie d'un texte et j'utilise preg_match_all.
mais je bloc sur les paramettres de $pattern.

Voici mon code actuel cela fonction bien mais je dois aller + loin :
<?php
$html = "<div>totot</div>";
$motif="`(<(div+)[^>]*>)(.*)(<\/\\2>)`";
preg_match_all ($motif, $html, $matches);
echo $matches[0][0];
?> 
se que je voudrais
<?php
$html = "<div class='bleu'>totot</div>";
//dans le pattern cibler uniquement totot et rien d autre
$motif="`(<(div+)[^>]*>)(.*)(<\/\\2>)`";
preg_match_all ($motif, $html, $matches);
echo $matches[0][0];
//resultat totot
?>

Posté : 30 avr. 2007, 13:50
par Ryle
Modération :
jeanmed, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé), je l'ai fait pour toi.

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.


Ceci étant dit, elle m'a l'air drolement compliquée ton expression.. t'as vraiment besoin d'autant de parenthèses pour capturer juste la chaine contenue entre <div> et </div> ?

Je ne l'ai pas essayé, mais je pense que ceci devrait faire l'affaire :
$html = "<div class='bleu'>totot</div>"; 
$motif="#<div[^>]*>(.*)<\/div>#Ui"; 

preg_match_all ($motif, $html, $matches);