preg_match_all + paramettre

jeanmed
Invité n'ayant pas de compte PHPfrance

30 avr. 2007, 13:14

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
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 avr. 2007, 13:50

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); 
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...