par
Ryle » 22 avr. 2008, 12:06
Il te manque la notion de capture dans ton expression (et un délimiteur d'expression régulière). Il te faut utiliser des parenthèse pour "capturer" la partie de la chaine qui t'intéresse, et une variable pour récupérer les valeurs capturées :
if ( preg_match( '#(.*)</p>#i', $chaine, $matches ) ) {
echo '<pre>';
print_r($matches);
echo '</pre>';
}
Ainsi tu captures tous les caractères jusqu'au "</p>"
J'ai ajouté l'option "i" pour ignorer la casse et que cela prenne en compte aussi bien </p> que </P>
Il peut être nécessaire de rajouter l'option "U" (Ungreedy) pour qu'il s'arrête au premier </p> et non au dernier (je sais jamais quand il faut le mettre ou pas)
Tu peux aussi ajouter le premier "<p>" avant la parenthèse pour que celui-ci ne soit pas capturé et que ta chaine contienne uniquement la valeur du texte. Ou au contraire, mettre les parenthèses autour des <p>..</p> pour les capturer avec

Il te manque la notion de capture dans ton expression (et un délimiteur d'expression régulière). Il te faut utiliser des parenthèse pour "capturer" la partie de la chaine qui t'intéresse, et une variable pour récupérer les valeurs capturées :
[php]if ( preg_match( '#(.*)</p>#i', $chaine, $matches ) ) {
echo '<pre>';
print_r($matches);
echo '</pre>';
}[/php]
Ainsi tu captures tous les caractères jusqu'au "</p>"
J'ai ajouté l'option "i" pour ignorer la casse et que cela prenne en compte aussi bien </p> que </P>
Il peut être nécessaire de rajouter l'option "U" (Ungreedy) pour qu'il s'arrête au premier </p> et non au dernier (je sais jamais quand il faut le mettre ou pas)
Tu peux aussi ajouter le premier "<p>" avant la parenthèse pour que celui-ci ne soit pas capturé et que ta chaine contienne uniquement la valeur du texte. Ou au contraire, mettre les parenthèses autour des <p>..</p> pour les capturer avec :)