HTML commentaire grattage en PHP
-
19-09-2019 - |
Question
Je l'ai regardé autour, mais doivent encore trouver une solution. Je suis en train de gratter un document HTML et obtenir le texte entre deux commentaires mais ont été incapables de le faire avec succès jusqu'à présent.
J'utilise PHP et ai essayé l'analyseur simple DOM PHP recommandé ici plusieurs fois, mais ne peut pas sembler obtenir à faire ce que je veux.
Voici (en partie) la page que je veux analyser:
<div class="class">
<!-- blah -->
text
<!-- end blah -->
Text I want
<!-- blah -->
text
<!-- end blah -->
</div>
Merci
La solution
Si l'on suppose que chaque commentaire est différent (par exemple « bla » est pas le même dans les première et deuxième sections), vous pouvez utiliser une strpos
simple à saisir tout entre eux. Les expressions régulières ne sont pas nécessaires.
$startStr = '<!-- end blah1 -->';
$endStr = '<!-- start blah2 -->';
$startPos = strpos($HTML, $startStr) + strlen($startStr);
$endPos = strpos($HTML, $endStr );
$textYouWant = substr($HTML, $startPos, $endPos-$startPos);
Si les deux séries de commentaires sont même, vous aurez besoin de modifier ceci pour trouver le deuxième « bla », en utilisant le paramètre strpos
de offset
Autres conseils
Peut-être que vous pouvez utiliser des expressions régulières?
$text = '
<div class="class">
<!-- blah -->
text
<!-- end blah -->
Text I want
<!-- blah -->
text
<!-- end blah -->
</div>
';
$regex = '/(<!-- end blah -->)(.*?)(<!-- blah -->)/ims';
$match = preg_match_all ($regex, $text, $matches);