commento HTML scraping in PHP
-
19-09-2019 - |
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
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);