2010-11-21 9 views
2

私はこの単純なPHP HTMLパーサー:http://simplehtmldom.sourceforge.netを使用しています。それを使用してHTML仕様のすべてのタグをエコーすることは可能ですか?DOMを使用してW3C仕様のすべてのHTMLタグをエコーすることはできますか?

+1

はあなたの現在のHTML文書内に存在するすべてのタグ、またはすべてのエコー意味するか見ますHTML仕様に存在するHTMLタグ? – Skilldrick

+0

すべてのタグはhtmlの指定にあります – woninana

答えて

5

あなたが行く:

$dom = new DOMDocument; 
$dom->load('http://www.w3.org/2002/08/xhtml/xhtml1-transitional.xsd'); 
$xsns = 'http://www.w3.org/2001/XMLSchema'; 
$elements = array(); 
foreach ($dom->getElementsByTagNameNS($xsns, 'element') as $element) { 
    if ($element->hasAttribute('name')) { 
     echo $element->getAttribute('name'); 
     $docs = $element->getElementsByTagNameNS($xsns, 'documentation'); 
     foreach ($docs as $doc) { 
      echo "\t", $doc->nodeValue; 
     } 
     echo PHP_EOL; 
    } 
} 

例えばXHTML1 Transitional(ないHTML)に加えて任意のドキュメント、のためのスキーマ定義(DTDではない)で上記のコードが出力されます、すべての要素タイプを

pre 
     content is "Inline" excluding 
     "img|object|applet|big|small|sub|sup|font|basefont" 

PHPのネイティブDOM拡張機能を使用しています。 The DOM extensionlibxmlを使用しており、速度に関してはSimpleHtmlDomより優れており、マークアップを制御できます。 The DOM interface is a language agnostic W3C specification。 DOM拡張の代替については

+0

1のDOMDocumentため;。。) –

+0

単純なHTML DOMパーサーとDOMDocumentを比較するには、私の答え[ここ](http://stackoverflow.com/questions/4098895/how-to-determine-if-text-string-appears-as-a-child-of- a-named-html-タグ/ 4235909#4235909)、[ここ](http://stackoverflow.com/questions/2735291/domdocument-class-unable-access-domnode/4230447#4230447)と[ここ](http://stackoverflow.com/質問/ 4044812/regex-domdocument-match-and-replace-text-in-a-link/4209925#4209925)。 –

-2

ドキュメントでは、それは

// Dumps the internal DOM tree back into string 
$str = $html; 

// Print it! 
echo $html; 

を言う私はエコーが$ strのない$ htmlのあるべきだと思うが、これは、文書が言うことです。


// Dumps the internal DOM tree back into string 
$str = $html->save(); 

// Dumps the internal DOM tree back into a file 
$html->save('result.htm'); 

この情報がお役に立てば幸いです。

ドキュメント:いいえ、そのパーサは、単純なHTMLパーサーですhttp://simplehtmldom.sourceforge.net/manual.htm

+0

htmlタグは表示されません:( – woninana

1

、それはDTDを解析する機能がないと、それはHTML要素を処理するための内部ロジックだが作るような方法で露出していない(あるいは表現されるいかなるわずかに便利であっても人間が読める形式で提示します)。ここで

+0

htmlタグをエコーするにはどうすればよいですか? – woninana

+1

これは別の質問です。なぜそうしようとしているのでしょうか? – Quentin

+0

dtdパーサーがある場合はリンクhttp://stackoverflow.com/questions/2917940/what-libraries-will-parse-a-dtd-using-phpが見つかりましたが、残念ながらnone存在し – woninana

関連する問題