Domanda

Ho cercato in giro, ma ho ancora trovato una soluzione. Sto cercando di raschiare un documento HTML e di ottenere il testo tra due commenti però sono stati in grado di farlo con successo finora.

Sto utilizzando PHP e ho provato il PHP semplice parser DOM consigliato qui molte volte, ma non riesco a arrivare a fare quello che voglio.

Ecco (in parte) la pagina che desidero analizzare:

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

  Text I want

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

Grazie

È stato utile?

Soluzione

Supponendo che ogni commento è diversa (vale a dire "blah" non è la stessa nella prima e nella seconda sezione), è possibile utilizzare alcuni semplici strpos per afferrare tutto tra di loro. Le espressioni regolari non sono necessari.

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

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

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

Se i due insiemi di commenti sono lo stesso, sarà necessario modificare questo per trovare il secondo "bla", utilizzando il parametro strpos di offset

Altri suggerimenti

Forse è possibile utilizzare le espressioni regolari?

$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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top