HTML açıklama PHP kazıma

2 Cevap php

Ben etrafa ama bir çözüm bulmak için henüz ettik. Ben bir HTML belgesi kazıyın ve iki yorum arasındaki metin, ancak başarıyla şimdiye kadar bunu yapmak mümkün olmuştur almaya çalışıyorum.

Ben PHP kullanıyorum ve birçok kez burada önerilen PHP Basit DOM ayrıştırıcı denedim ama ne istediğinizi yapmak için almak gibi olamaz.

İşte ayrıştırmak isteyen sayfasında (parçası) bulunuyor:

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

  Text I want

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

Teşekkürler

2 Cevap

Her comment (yani "filan" birinci ve ikinci bölümlerinde aynı değildir) farklı olduğunu varsayarsak, bazı basit strpos aralarında her şeyi kapmak için kullanabilirsiniz. Regular expressions are not necessary.

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

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

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

Yorumların iki set are aynı, kullanarak, ikinci "blah" bulmak için bu değiştirmeniz gerekir eğer strpos 's offset parametresi

Belki normal ifadeleri kullanabilirsiniz?

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