3

私は周りを見回してきましたが、まだ解決策を見つけていません。HTMLドキュメントをスクレイピングして2つのコメント間のテキストを取得しようとしていますが、これまでのところうまくいきません.

私は PHP を使用しており、ここで推奨されている PHP Simple DOM パーサーを何度も試しましたが、やりたいことを実行できないようです。

解析したいページ(の一部)は次のとおりです。

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

  Text I want

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

ありがとう

4

2 に答える 2

4

各コメントが異なる (つまり、最初のセクションと 2 番目のセクションで "blah" が同じではない) と仮定すると、単純ないくつかのコメントを使用strposして、それらの間のすべてを取得できます。正規表現は必要ありません。

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

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

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

2 つのコメント セットが同じstrposである場合は、のoffsetパラメータを使用して、これを変更して 2 番目の「何とか」を見つける必要があります。

于 2009-08-26T12:00:24.707 に答える
3

もしかしたら正規表現が使えるかも!?

$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);
于 2009-08-26T06:14:06.357 に答える