-2

我正在寻找一种<dl>使用 PHP 将 HTML 定义列表转换​​为嵌套数组的方法。

示例列表:

<dl>
  <dt>A</dt>
    <dd>A1</dd>
  <dt>B</dt>
    <dd>B1</dd>
    <dd>B2</dd>
</dl>

首选输出:

[ 'A' => ['A1'], 'B' => ['B1', 'B2'] ]

我已经找到了一个 jQuery 解决方案(Turning HTML <dl> into a nested JavaScript array with jQuery),它(几乎)像我想要的那样工作,但我正在做一个没有 jQuery 的项目,因此想做同样的事情只用 PHP。

我也已经看过像 XML_PARSE_INTO_STRUCT 这样的 PHP 函数,但不幸的是我没有找到一个可行的解决方案。

所以我目前坚持我的搜索。谁能给我一个指向正确方向的指针?

4

1 回答 1

0

您可以使用纯 JS 而不使用 jQuery 简单地做到这一点。

        function dlToObject(dl){
            if(!dl){
                return {};
            }

            var elems  = dl.querySelectorAll('dl dt, dl dd'),
                parent = '',
                result = {};

            for(var i=0; i<elems.length; i++){
                var element = elems[i];

                if(element.tagName.toLowerCase() == 'dt'){
                    parent = element.innerText;
                    result[parent] = [];
                }else{
                    result[parent].push(element.innerText)
                }
            }

            return result;
        }

        var myDl = document.querySelector('dl');

        console.log(dlToObject(myDl)); //{'A':['A1'],'B':['B1', 'B2']}
于 2018-06-04T15:19:49.463 回答