Prég match texte en php entre les balises html
Bonjour je voudrais utiliser preg_match en PHP pour analyser le "texte désiré" à partir de ce qui suit d'un document html
<p class="review"> Desired text </p>
normalement j'utiliserais simple_html_dom pour de telles choses mais à cette occasion il ne peut pas être utilisé (l'élément ci-dessus n'apparaît pas dans chaque étiquette div désirée donc je suis forcé d'utiliser cette approche pour garder la trace de exactement quand il n'apparaît pas et puis ajuster mon tableau de simple_html_dom en conséquence).
quoi qu'il en soit, cela résoudrait mon problème.
Merci beaucoup.
3 réponses
preg_match("'<p class=\"review\">(.*?)</p>'si", $source, $match);
if($match) echo "result=".$match[1];
si vous voulez retourner plusieurs correspondances, alors vous devez utiliser preg_match_all(). Vous faites ensuite une boucle dans le second groupe de résultats ($match[1]) pour obtenir juste le contenu entre les balises.
$source = "<p class=\"review\"> Desired text1 </p>".
"<p class=\"review\"> Desired text2 </p>".
"<p class=\"review\"> Desired text3 </p>";
preg_match_all("'<p class=\"review\">(.*?)</p>'si", $source, $match);
foreach($match[1] as $val)
{
echo $val."<br>";
}
Outputs:
Desired text1
Desired text2
Desired text3
et si la chaîne que vous associez a plusieurs lignes et est:
<p class="review"> Desired text1 </p>
<p class="review"> Desired text2 </p>
<p class="review"> Desired text3 </p>
ce motif correspondrait une fois, et la correspondance serait tout dans la chaîne.
je pense qu'un meilleur modèle est le suivant:
"'<p class=\"review\">([^<]*)</p>'si"