yop,
j'suis pas trop doué pour ces troucs mais ça devrait marcher (enfin si j'ai bien compris ce que tu voulais faire) :
Code :
- $string = '<div class="Pad1Color2">la castafiore </div> broleke <div class="Pad1Color2">un patapouf !!!</div>';
- $matches = array();
- $pattern = "#<div class=\"Pad1Color2\">([^<]*)</div>#";
- if (preg_match_all($pattern , $string, $matches ))
- echo "Trouved<br />";
- else
- echo "Pas trouved<br />";
- print_r($matches);
|
le "?" dit que le caractère le précédent peut être présent ou non.
Dans le pattern, les " sont échappés par un \ => \" (Il faut les échapper parce que ta chaine est entourée de " aussi)
<div class="Pad1Color2"> est le début du pattern (où il faut échapper les caractères spéciaux s'il y en a).
</div> est la fin du pattern.
Ce qu'on veut capturer, on le met entre ()
On veut avoir tout ce qui se trouve entre les deux balises. On commence après la première balise. On doit s'arrêter avant la deuxième balise (</div> )
Donc on va dire qu'on va prendre tous les caractères différents de "<" (qui indiquerait le début de </div> ).
Bon, ce serait mieux de dire de s'arrêter dès qu'il trouve "</div>" mais je ne sais pas comment faire 
Bref, ici on veut n'importe quoi sauf "<" ce qui s'écrit [^<]*
les caractères entre [] sont autorisés sauf si précédés d'un ^
* dit que les caractères permis peuvent apparaitre un nombre quelconque de fois.
voilou, mais y a surement mieux 
Message édité par art_dupond le 08-05-2008 à 12:23:34
---------------
oui oui