2009-08-26 15 views
3

J'ai regardé autour mais je n'ai pas encore trouvé une solution. J'essaie de gratter un document HTML et obtenir le texte entre deux commentaires mais j'ai été incapable de le faire avec succès jusqu'à présent. J'utilise PHP et j'ai essayé le PHP Simple DOM parser recommandé ici plusieurs fois, mais je n'arrive pas à l'obtenir pour faire ce que je veux.HTML commentaire grattage en PHP

est ici (en partie) la page que je veux analyser:

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

    Text I want 

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

Merci

+0

Pourriez-vous nous montrer votre position actuelle code? – Randell

Répondre

4

En supposant 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 les mêmes, vous devrez modifier ceci pour trouver le deuxième « bla », en utilisant le paramètre strpos « s offset

4

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

Obligatoire "maintenant vous avez deux problèmes" commentaire;) – DisgruntledGoat

+11

"Chaque fois que vous essayez d'analyser HTML avec des expressions régulières, l'enfant impie pleure le sang des vierges". –

+0

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

Questions connexes