2009-08-26 8 views
3

Ich habe mich umgeschaut, habe aber noch keine Lösung gefunden. Ich versuche, ein HTML-Dokument zu scrappen und den Text zwischen zwei Kommentaren zu erhalten, konnte dies jedoch bisher nicht erfolgreich durchführen.HTML-Kommentar Scraping in PHP

Ich benutze PHP und habe versucht, den PHP Simple DOM Parser hier oft empfohlen, aber es scheint nicht zu tun, was ich will.

Hier ist (zum Teil) die Seite, die ich analysieren möchten:

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

    Text I want 

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

Dank

+0

Können Sie uns zeigen Sie Ihre aktuelle Code? – Randell

Antwort

4

Unter der Annahme, dass jeder Kommentar unterschiedlich ist (das heißt „blah“ ist nicht das Gleiche in den ersten und den zweiten Abschnitt), können Sie einige einfache strpos verwenden, um alles zwischen ihnen zu greifen. 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 gleich sind, müssen Sie dies ändern, um den zweiten „blah“ zu finden, mit strpos ‚s offset Parametern

4

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); 
+21

Obligatorisch "jetzt haben Sie zwei Probleme" Kommentar;) – DisgruntledGoat

+11

"Jedes Mal, wenn Sie versuchen, HTML mit regulären Ausdrücken zu analysieren, weint das unheilige Kind das Blut von Jungfrauen." –

+0

https://Stackoverflow.com/a/1732454/1461424 – Krumia