如何在DOMNode上执行XPath查询并转换为txt?

时间:2017-03-15 14:46:02

标签: html file xpath

我需要使用xpath查询提取<h2 style="text-align: justify;"><p style="text-align: justify;">元素内容,并清除内部的html,将其转换为txt文件。

以下是来源:

<div class="blog-content">
<div id="div-gpt-ad-1460730703306-0">
<script type="text/javascript" src="https://www.googletagservices.com/tag/js/gpt.js">googletag.defineSlot('/134284252/corsoitalia-728x90', [[728, 90], [300, 250]], 'div-gpt-ad-1460730703306-0').addService(googletag.pubads()).setTargeting(); googletag.pubads().enableSyncRendering();googletag.enableServices();googletag.display('div-gpt-ad-1460730703306-0');</script>
</div>
<p class="no-break">
<span st_url='http://www.corsoitalianews.it/70211-2-mauro-marsu-150317/' st_title='Mauro Marsu presenta Prima dell&#8217;alba al Marianiello il 24 marzo' class='st_facebook_hcount'></span>
<span st_url='http://www.corsoitalianews.it/70211-2-mauro-marsu-150317/' st_title='Mauro Marsu presenta Prima dell&#8217;alba al Marianiello il 24 marzo' class='st_fblike_hcount'></span>
<span st_username='corsoitalianews' st_url='http://www.corsoitalianews.it/70211-2-mauro-marsu-150317/' st_title='Mauro Marsu presenta Prima dell&#8217;alba al Marianiello il 24 marzo' class='st_twitter_hcount'></span>
<span st_url='http://www.corsoitalianews.it/70211-2-mauro-marsu-150317/' st_title='Mauro Marsu presenta Prima dell&#8217;alba al Marianiello il 24 marzo' class='st_googleplus_hcount'></span>
<span st_url='http://www.corsoitalianews.it/70211-2-mauro-marsu-150317/' st_title='Mauro Marsu presenta Prima dell&#8217;alba al Marianiello il 24 marzo' class='st_pinterest_hcount'></span>
<span st_url='http://www.corsoitalianews.it/70211-2-mauro-marsu-150317/' st_title='Mauro Marsu presenta Prima dell&#8217;alba al Marianiello il 24 marzo' class='st_linkedin_hcount'></span></p>
<h2 style="text-align: justify;">Venerdì 24 marzo dalle ore <span title="9:30 nel tuo fuso orario">22:30 presso il Gran Caffè Marianiello di Piano di Sorrento Mauro Marsu presenterà il suo ultimo disco: Prima dell&#8217;alba</span></h2>
<p style="text-align: justify;"><img class="alignleft wp-image-70212" src="http://corsoitalia.pierodecindioweb.netdna-cdn.com/wp-content/uploads/2017/03/17155296_1845309335727349_720535044501942857_n-213x300.jpg" width="400" height="563" srcset="http://corsoitalia.pierodecindioweb.netdna-cdn.com/wp-content/uploads/2017/03/17155296_1845309335727349_720535044501942857_n-213x300.jpg 213w, http://corsoitalia.pierodecindioweb.netdna-cdn.com/wp-content/uploads/2017/03/17155296_1845309335727349_720535044501942857_n.jpg 682w" sizes="(max-width: 400px) 100vw, 400px" />Il prossimo venerdì 24 marzo, presso il Gran Caffè Marianiello di Piano di Sorrento (piazza Cota), si terrà il concerto di presentazione del nuovo disco di <strong>Mauro Marsu</strong>, Prima dell&#8217;alba, disponibile su tutti gli stores digitali e in copia fisica:<br />
<a href="https://www.facebook.com/marsumc" data-hovercard="/ajax/hovercard/user.php?id=1592735873&amp;extragetparams=%7B%22directed_target_id%22%3A1218425214941997%7D" data-hovercard-prefer-more-content-show="1">Mauro Marsu</a> &#8211; voce/voce narrante<br />
<a href="https://www.facebook.com/djspidermusic" data-hovercard="/ajax/hovercard/user.php?id=1541390147&amp;extragetparams=%7B%22directed_target_id%22%3A1218425214941997%7D" data-hovercard-prefer-more-content-show="1">Roberto DjSpider Ciuoffo</a> &#8211; giradischi</p>
<p style="text-align: justify;"><strong>Special guests:</strong><br />
<a href="https://www.facebook.com/KatiaDeMartino" data-hovercard="/ajax/hovercard/user.php?id=687303064&amp;extragetparams=%7B%22directed_target_id%22%3A1218425214941997%7D" data-hovercard-prefer-more-content-show="1">Katia De Martino</a><br />
<a href="https://www.facebook.com/djneno81" data-hovercard="/ajax/hovercard/user.php?id=585460485&amp;extragetparams=%7B%22directed_target_id%22%3A1218425214941997%7D" data-hovercard-prefer-more-content-show="1">Tonino Aprea</a> a.k.a. DJ Neno<br />
<a href="https://www.facebook.com/antonino.staiano.92" data-hovercard="/ajax/hovercard/user.php?id=1108264920&amp;extragetparams=%7B%22directed_target_id%22%3A1218425214941997%7D" data-hovercard-prefer-more-content-show="1">Antonino Staiano</a><br />
<a href="https://www.facebook.com/luigi.apredamollo" data-hovercard="/ajax/hovercard/user.php?id=1654098883&amp;extragetparams=%7B%22directed_target_id%22%3A1218425214941997%7D" data-hovercard-prefer-more-content-show="1">Luigi Apreda Mollo</a> a.k.a. <a href="https://www.facebook.com/DiamondLouisElite/" data-hovercard="/ajax/hovercard/page.php?id=1259307280770798&amp;extragetparams=%7B%22directed_target_id%22%3A1218425214941997%7D" data-hovercard-prefer-more-content-show="1">Diamond Louis</a><br />
<a href="https://www.facebook.com/cristian.izzo.3" data-hovercard="/ajax/hovercard/user.php?id=1648668678&amp;extragetparams=%7B%22directed_target_id%22%3A1218425214941997%7D" data-hovercard-prefer-more-content-show="1">Cristian Izzo</a><span class="text_exposed_show"><br />
<a href="https://www.facebook.com/zorama.official/" data-hovercard="/ajax/hovercard/page.php?id=185577451465151&amp;extragetparams=%7B%22directed_target_id%22%3A1218425214941997%7D" data-hovercard-prefer-more-content-show="1">Zorama</a></span></p>
<p style="text-align: justify;">Il disco ha un concept particolare e racconta la storia di una notte e dei suoi abitanti, dei suoi attori più o meno protagonisti. È la storia di chi lavora di notte o di chi la vive per divertimento. È un’umana commedia che terminerà al forno di Aniello. Un barbone e una prostituta a far da Angelo e Dea, una casellante, Ada, a far da apripista per l’”ade notturno. Una coppia di innamorati in cerca di amore, un bambino in cerca della tranquillità per riposare, rassicurato dal lampeggiante di un vigilante. Un barista amico di tutti, uno spacciatore, dei ragazzi impegnati in una campagna elettorale che si confronteranno con un’aspirante giornalista, che di fatto, i giornali li consegna. Una tassista che scarrozza persone e ne immagina a sua volta le storie. Un portiere d’albergo che ama i cruciverba, uno spazzino amante del jazz a cui toccherà “ripulire il palco in cui questa notte è andata in scena con i suoi protagonisti e le sue comparse.</p>
<p style="text-align: justify;"><span class="text_exposed_show"><strong>Un viaggio lungo una notte, tra fantasia e realtà, che vanno ad intrecciarsi&#8230; prima dell’alba. </strong></span></p>
<p style="text-align: justify;"><strong>Tante le collaborazioni:</strong><br />
</div>

代码示例:

foreach ($nodes as $node) {
    foreach ($x_path->query('h2|p', $node) as $child) {
        echo $child->nodeValue, PHP_EOL;
    }
}

谢谢

1 个答案:

答案 0 :(得分:0)

我对PHP没什么经验,所以我不确定语法是否100%正确...尝试下面的代码并告诉我这是不是你想要的:

$divs = $x_path->query( '//div[@class="blog-content"]' );
foreach( $divs as $div ){
    $headers=$x_path->query( './h2', $div );
    echo $headers->item(0)->nodeValue, PHP_EOL;
    $paragraphs=$x_path->query( './p', $div );
    foreach( $paragraphs as $p ){
        echo $p->nodeValue, PHP_EOL;
    }
}