Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将网页中的所有HTML标记提取到数组中?_Php_Html_Xml_Dom_Extract - Fatal编程技术网

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

Php 如何将网页中的所有HTML标记提取到数组中?,php,html,xml,dom,extract,Php,Html,Xml,Dom,Extract,我需要将网页中的所有HTML标记提取到一个数组中,而不包含标记中的数据。它看起来像 我正在使用PHP Array { html => Array { head => Array { title,

我需要将网页中的所有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'
                                                                  }
                                                        }
                                              }
                          }

             }
}

您需要的是一个HTML解析器(XML解析器可能不会这样做,因为HTML通常是无效的)。可能:

您需要的是一个HTML解析器(XML解析器可能不会这样做,因为HTML通常是无效的)。可能:

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

//*::name()

应该提供所有级别上所有节点的名称。但我不确定层次结构是否会扁平化。

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

//*::name()

应该提供所有级别上所有节点的名称。但是,我不确定层次结构是否会被展平。

您也可以使用。

您也可以使用建议的第三方替代方案来代替实际使用的字符串解析:,并且当您使用
加载HTML()
时,.DOM可以很好地加载真实世界的HTML。这似乎是一个常见的误解。建议使用第三方替代方法来代替字符串解析:,.DOM可以在使用
loadHTML()
时很好地加载真实世界的HTML。这似乎是一个常见的误解。可能的重复,可能的重复这是怎么回事?我只是在Firefox的控制台上执行了它,得到了一个基本上为空的返回值。这应该如何工作?我只是在Firefox的控制台上执行了它,得到了一个基本为空的返回值。