如何从网页中将所有HTML标记提取到数组中?

时间:2010-10-06 14:22:49

标签: php html xml dom extract

我需要从网页中将所有HTML标记提取到数组而不包含标记内的数据。它看起来像......

我正在使用PHP

Array 
{
   html =>
             Array 
             {
                 head =>
                          Array
                          {
                              title,
                              meta name='description' content='bla bla'
                              meta name='keyword' content='bla bla'
                              ....
                          },
                 body =>
                          Array
                          {
                              div id='header' =>
                                              Array
                                              {
                                                  div class='logo',
                                                  div class='nav'
                                              },
                              div id='content' =>
                                              Array
                                              {
                                                  h1,
                                                  p class='first-para',
                                                  p,
                                                  p,
                                                  div id='ad'
                                              },
                              div id='footer' =>
                                              Array
                                              {
                                                  ul =>
                                                        Array
                                                        {
                                                            li =>
                                                                  Array
                                                                  {
                                                                     a href='link.htm'
                                                                  },
                                                            li =>
                                                                  Array
                                                                  {
                                                                     a href='link.htm'
                                                                  },
                                                            li =>
                                                                  Array
                                                                  {
                                                                     a href='link.htm'
                                                                  }
                                                        }
                                              }
                          }

             }
}

3 个答案:

答案 0 :(得分:2)

您需要的是HTML解析器(XML解析器可能不会这样做,因为HTML通常无效)。也许:http://simplehtmldom.sourceforge.net/

答案 1 :(得分:1)

您还可以使用PHP DOM extension

答案 2 :(得分:0)

我认为最简单的方法是使用XPath。

//*::name()

应该为您提供所有级别上所有节点的名称。我不确定不会将层级结构弄平。