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

Était-ce utile?

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top