如何用Curl获取网页并仅输出前两个<p>标签?
只输出网页中前两个
<p>标签的PHP实现方案 嘿,我来帮你调整这段代码,让它只输出抓取到的第一个和第二个<p>标签~下面给你两种实用的实现方式:
方法一:遍历计数法(基于你原有的代码修改)
这种方法在你现有代码的基础上,增加一个计数器来控制只输出前两个<p>元素,改动很小:
<?php $url = "http://www.web.org/dorama/1401143633/momikeshite-fuyu--wagaya-no-mondai-nakatta-koto-ni"; $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $html = curl_exec($ch); curl_close($ch); $dom = new DOMDocument(); @$dom->loadHTML($html); // 新增计数器变量 $count = 0; foreach($dom->getElementsByTagName('p') as $link) { $count++; // 只输出前两个p标签 echo $dom->saveXML($link); if ($count >= 2) { break; // 达到数量后终止循环 } } ?>
方法二:DOMXPath查询法(更简洁高效)
如果想更直接地定位前两个<p>标签,可以用DOMXPath来精准查询,代码逻辑会更清晰:
<?php $url = "http://www.web.org/dorama/1401143633/momikeshite-fuyu--wagaya-no-mondai-nakatta-koto-ni"; $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $html = curl_exec($ch); curl_close($ch); $dom = new DOMDocument(); @$dom->loadHTML($html); $xpath = new DOMXPath($dom); // 直接查询前两个p标签 $pTags = $xpath->query('//p[position() <= 2]'); foreach ($pTags as $tag) { echo $dom->saveXML($tag); } ?>
两种方法都能实现你的需求,你可以根据自己的习惯选择~
内容的提问来源于stack exchange,提问作者jazuly aja
相关产品推荐
相关产品推荐

