2009-08-26 10 views
3

私は周りを見回してきましたが、解決策をまだ見つけていません。私はHTML文書を掻き集め、2つのコメントの間にテキストを取得しようとしていますが、これまでこれを成功させることはできませんでした。PHPでのHTMLコメントの掻き取り

私はPHPを使用していますが、ここで何度も推奨されているPHP Simple DOMパーサを試してみましたが、私が望むことをすることができません。

ここで私が解析したいページ(の一部)です。

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

    Text I want 

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

おかげ

+0

を使用して、第二の「何とか」を見つけるために、これを変更する必要があります、あなたは私達にあなたの電流を示すことができましたコード? – Randell

答えて

4

(すなわち「何とか」とは、第1および第2のセクション内の同じされていない)、あなたはそれらの間のすべてをつかむためにいくつかの簡単なstrposを使用することができ、それぞれのコメントが異なっていると仮定すると。 正規表現は必要ありません。

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

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

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

コメントの二組が同じている場合は、strposoffsetパラメータ

4

たぶん、あなたは正規表現を使用することができますか?

$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

義務のある "今あなたは2つの問題がある"コメント – DisgruntledGoat

+11

"正規表現でHTMLを解析しようとするたびに、悪意のある子供は処女の血を泣かせる"。 –

+0

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