3

我一直在环顾四周,但还没有找到解决方案。我正在尝试抓取一个 HTML 文档并获取两个评论之间的文本,但是到目前为止还无法成功地做到这一点。

我正在使用 PHP,并且已经尝试过这里推荐的 PHP Simple DOM 解析器很多次,但似乎无法让它做我想做的事情。

这是我希望解析的页面(部分):

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

  Text I want

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

谢谢

4

2 回答 2

4

假设每条评论都不一样(即第一和第二部分的“blah”不一样),你可以用一些简单strpos的来抓取它们之间的所有内容。正则表达式不是必需的。

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

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

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

如果两组注释相同,需要修改它以找到第二个“blah”,使用strpos'soffset参数

于 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 回答