You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:25:25