【问题标题】:how to print only one tag with curl如何用 curl 只打印一个标签
【发布时间】:2018-01-14 14:38:17
【问题描述】:

我的网络中有 2 或 3 个标签 <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);

foreach($dom->getElementsByTagName('p') as $link) {
        echo $dom->saveXML( $link);
}
?>

【问题讨论】:

    标签: php curl domdocument


    【解决方案1】:

    当您使用 getElementsByTagName() 时,您会得到一个节点列表 ( DOMNodeList ),您当前使用 foreach() 来遍历所有节点。如果您只想要第一个,您可以使用item() 来获取您想要的特定的(在这种情况下为 0)...

    echo $dom->saveXML( $dom->getElementsByTagName('p')->item(0) );
    

    【讨论】:

    • 抱歉,我正在编辑我的问题。我想显示p 第一个和第二个。因为p第一个是图片p第二个是概要
    • 如果要显示第二个,请将 (0) 替换为 (1)。
    • 是的 - 所以你使用上面的行作为第一行,然后用同一行做另一个回显,但将 (0) 替换为 (1) 作为主要内容。
    • 您可以将 preg_replace 与saveXML() 的结果一起使用,但不能与任何 DOM 元素一起使用。您可以使用 XPath 之类的东西和 DOM 来查找特定节点并删除它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    相关资源
    最近更新 更多