【问题标题】:PHP extract html tag and contents [duplicate]PHP提取html标签和内容[重复]
【发布时间】:2015-06-10 08:28:48
【问题描述】:

我有:

<html>
<head>
    <title>My Page</title>
</head>
<body>
    <p>paragraph 1</p>
    <p>paragraph 2</p>
    <p>paragraph 3</p>
    <p>paragraph 4</p>
    <ul>
        <li>item # 1</li>
        <li>item # 2</li>
        <li>item # 3</li>
        <li>item # 4</li>
    </ul>
    <a href="#">anchor 1</a>
    <a href="#">anchor 2</a>
    <a href="#">anchor 3</a>
    <a href="#">anchor 4</a>
    <div>div # 1</div>
    <div>div # 2</div>
    <div>div # 3</div>
    <div>div # 4</div>
</body>
</html>

我希望能够提取一个指定的标签,比如说一个 div 标签,以及它的内容。

目前为止

$file = file_get_contents('file.html');
$dom = new DOMDocument();
$dom->loadHTML( $file );
$xpath = new DOMXpath( $dom );
$paragraphs = $xpath->query("/html/body//p");

for( $i = 0; $i < $paragraphs->length; $i++ )
{
     # echo the tag and it's contents
}

我尝试使用nodeValuetextContent,但它们只打印标签的内容,而不是标签及其内容。

这是我第一次在 PHP 中使用 DOM 解析器。我知道有人反对使用正则表达式解析 HTML/XML,所以我使用的是 DOM 解析器。任何建议都会有所帮助。

【问题讨论】:

    标签: php html dom xpath


    【解决方案1】:

    这应该适用于 PHP 版本 5.3.6+。只需将节点传递给 DOMDocument::saveHTML 函数即可。

    for( $i = 0; $i < $paragraphs->length; $i++ )
    {
         echo $dom->saveHTML($paragraph->item($i));
    }
    

    我希望这会有所帮助!

    【讨论】:

    • 干得好!谢谢!
    • 简单而小巧。正是我需要的
    • foreach($paragraphs as $pargraph) { 也比较简单。
    • 为什么只支持 php 5.3.6+?
    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2011-12-14
    • 2015-07-20
    • 1970-01-01
    相关资源
    最近更新 更多