2010-10-06 20 views
0

我需要將網頁中的所有HTML標籤提取到數組中,而標籤內沒有數據。它看起來像...如何從網頁中將所有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' 
                    } 
                 } 
               } 
          } 

      } 
} 
+0

[解析HTML的最佳方法]的可能的重複(http://stackoverflow.com/questions/3577641/best-methods-to-parse-html) – Gordon 2010-10-06 14:47:10

回答

2

你需要的是一個HTML解析器(XML解析器可能不會做,因爲HTML通常是無效的)。也許:http://simplehtmldom.sourceforge.net/

+1

建議第三方替代[SimpleHtmlDom](http:// simplehtmldom.sourceforge.net/)實際使用[DOM](http://php.net/manual/en/book.dom.php)而不是字符串分析:[phpQuery](http://code.google.com/p/phpquery /),[Zend_Dom](http://framework.zend.com/manual/en/zend.dom.html),[QueryPath](http://querypath.org/)和[FluentDom]( http://www.fluentdom.org)。 – Gordon 2010-10-06 14:46:49

+0

當你使用'loadHTML()'時,DOM可以加載真實世界的HTML。這似乎是一種常見的誤解。 – Gordon 2010-10-06 15:05:00

0

我認爲最簡單的方法是使用XPath。

//*::name() 

應該給你所有層次上所有節點的名稱。 Iam不確定不是層次結構將被平鋪。

相關問題