Frage

Ich habe mal umschauen, aber noch eine Lösung zu finden. Ich versuche, ein HTML-Dokument und erhalten Sie den Text zwischen zwei Kommentaren zu kratzen jedoch nicht in der Lage gewesen, dies bisher erfolgreich zu tun.

Ich bin mit PHP und haben die PHP einfache DOM-Parser versucht hier oft empfohlen, aber kann nicht scheinen, um es zu bekommen zu tun, was ich will.

Hier ist (ein Teil) die Seite, dass ich analysieren möge:

<div class="class">
  <!-- blah -->
    text
  <!-- end blah -->

  Text I want

  <!-- blah -->
    text
  <!-- end blah -->
</div>

Danke

War es hilfreich?

Lösung

Unter der Annahme, dass jeder Kommentar unterschiedlich ist (das heißt „blah“ ist nicht gleich in den ersten und den zweiten Abschnitt), können Sie einige einfache strpos zu greifen alles zwischen ihnen verwenden. Reguläre Ausdrücke sind nicht erforderlich.

$startStr = '<!-- end blah1 -->';
$endStr = '<!-- start blah2 -->';

$startPos = strpos($HTML, $startStr) + strlen($startStr);
$endPos = strpos($HTML, $endStr );

$textYouWant = substr($HTML, $startPos, $endPos-$startPos);

Wenn die zwei Sätze von Kommentaren ist die gleiche ist, werden Sie dies ändern müssen, um den zweiten „blah“ zu finden, strpos mit ist offset Parameter

Andere Tipps

Vielleicht können Sie reguläre Ausdrücke verwenden?

$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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top