【问题标题】:Simple html dom - how get dt/dd elements to array? [duplicate]简单的 html dom - 如何将 dt/dd 元素放入数组? [复制]
【发布时间】:2012-10-09 15:16:11
【问题描述】:

可能重复:
Get data only from html table used preg_match_all in php

HTML:

   <div class="table">
       <dl>
            <dt>ID:</dt>
            <dd>632991</dd>
            <dt>Type:</dt>
            <dd>NEW</dd>
            <dt>Body Type:</dt>
            <dd>Compact</dd>
        </dl>
    </div>

在 PHP 中使用 simple_html_dom 的最佳方法是什么:

PHP:

$option = array(
    'id' => 632991,
    'Type' => 'NEW',
    'Body Type' => 'Compact'
 );

【问题讨论】:

    标签: php html arrays simple-html-dom


    【解决方案1】:

    您可以使用 XPath:

    Getting DOM elements by classname

    Get Element ByTag Name

    Using PHP to get DOM Element

    这里有很多关于 Stackoverflow 的帖子。在此处使用搜索。

    编辑:

    <?php
    
    $dom = new DOMDocument();
    $dom->loadHTML('<div class="table">
           <dl class="list">
                <dt>ID:</dt>
                <dd>632991</dd>
                <dt>Type:</dt>
                <dd>NEW</dd>
                <dt>Body Type:</dt>
                <dd>Compact</dd>
            </dl>
        </div>');
    
    $nodes = $dom->getElementsByTagName('dl');
    foreach ($nodes as $node) {
        var_dump(getArray($node));
    }
    
    function getArray($node) { 
        $array = false; 
    
        if ($node->hasAttributes()) { 
            foreach ($node->attributes as $attr) { 
                $array[$attr->nodeName] = $attr->nodeValue; 
            } 
        } 
    
        if ($node->hasChildNodes()) { 
            if ($node->childNodes->length == 1) { 
                $array[$node->firstChild->nodeName] = $node->firstChild->nodeValue; 
            } else { 
                foreach ($node->childNodes as $childNode) { 
                    if ($childNode->nodeType != XML_TEXT_NODE) { 
                        $array[$childNode->nodeName][] = getArray($childNode); 
                    } 
                } 
            } 
        } 
        return $array; 
    } 
    ?>
    

    getArray函数来自php.net

    【讨论】:

    • 这些链接有点过于通用和 RTFM,它们都不属于 &lt;table&gt; 示例。
    • 最后一个链接下面是一个完整的例子。是的,这是一个简短的提示。当你想学习一些你应该考虑并尝试的东西时?
    • 我们已经有几千个关于这个主题的粗略答案,正如你所说的那样。
    • 嘿,我没那么快;)当我发布一些代码时,它应该是正确的。但大部分信息都在相关网站上。
    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 2012-01-03
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    相关资源
    最近更新 更多