Скрепление HTML-комментариев в PHP - PullRequest
3 голосов
/ 26 августа 2009

Я искал вокруг, но пока не нашел решения. Я пытаюсь очистить HTML-документ и получить текст между двумя комментариями, однако пока не смог сделать это успешно.

Я использую PHP и пробовал парсер PHP Simple DOM, рекомендованный здесь много раз, но не могу заставить его делать то, что я хочу.

Вот (часть) страницы, которую я хочу проанализировать:

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

  Text I want

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

Спасибо

Ответы [ 2 ]

4 голосов
/ 26 августа 2009

Предполагая, что каждый комментарий отличается (т. Е. "Blah" не одинаков в первом и втором разделах), вы можете использовать несколько простых strpos, чтобы перебрать все между ними. Регулярные выражения не обязательны.

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

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

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

Если два набора комментариев являются одинаковыми, вам нужно изменить это, чтобы найти второго "бла", используя strpos 'offset параметр

3 голосов
/ 26 августа 2009

Может быть, вы можете использовать регулярные выражения?

$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);
...