ウクライナは今あなたの助けを必要としています!
2022年2月24日、ロシアのウラジーミル・プーチン大統領はロシア軍によるウクライナ侵攻を命令した。
あなたのサポートが緊急に必要です。
- ボランティアに寄付します。ウクライナ軍が必要な装備をすべて提供できるように支援するボランティア基金は次のとおりです: https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi- armiyi または https://savelife.in.ua/en/donate/
- ソーシャルメディアソースを三重チェックします。ロシアの偽情報はウクライナの現実を隠蔽し歪めようとしている。
- ロシアの攻撃や砲撃から逃れているウクライナ難民を助けてください: https://www.globalcitizen.org/en/content/ways-to-help-ukraine-conflict/
- ウクライナに支援を提供するよう政治代表者に圧力をかけましょう。
- ウクライナ国民を信じてください、彼らは降伏しません、彼らには別のウクライナはありません。
ありがとう!
HTML5 は、標準に準拠した HTML5 パーサーおよびライターであり、完全に PHP で記述されています。安定しており、多くの運用 Web サイトで使用されており、ダウンロード数は 500 万をはるかに超えています。
HTML5は以下の機能を提供します。
Composer を使用して HTML5-PHP をインストールします。
masterminds/html5
依存関係をcomposer.json
ファイルに追加します。
{
"require" : {
"masterminds/html5" : " ^2.0 "
},
}
Composer 実行可能ファイルを介して require コマンドを呼び出すと、次のようになります。
composer require masterminds/html5
HTML5-PHP には、高レベル API と低レベル API があります。
高レベルのHTML5
ライブラリ API の使用方法は次のとおりです。
<?php
// Assuming you installed from Composer:
require " vendor/autoload.php " ;
use Masterminds HTML5 ;
// An example HTML document:
$ html = <<< 'HERE'
<html>
<head>
<title>TEST</title>
</head>
<body id='foo'>
<h1>Hello World</h1>
<p>This is a test of the HTML5 parser.</p>
</body>
</html>
HERE;
// Parse the document. $dom is a DOMDocument.
$ html5 = new HTML5 ();
$ dom = $ html5 -> loadHTML ( $ html );
// Render it as HTML5:
print $ html5 -> saveHTML ( $ dom );
// Or save it to a file:
$ html5 -> save ( $ dom , ' out.html ' );
パーサーによって作成された$dom
、完全なDOMDocument
オブジェクトです。また、 save()
とsaveHTML()
メソッドは任意の DOMDocument を受け取ります。
HTML5 ドキュメントをロードするときに、構成オプションの配列を渡すことができます。
// An associative array of options
$ options = array (
' option_name ' => ' option_value ' ,
);
// Provide the options to the constructor
$ html5 = new HTML5 ( $ options );
$ dom = $ html5 -> loadHTML ( $ html );
次のオプションがサポートされています。
encode_entities
(ブール値): シリアライザーが文字をエンティティとして積極的にエンコードする必要があることを示します。これがないと、最低限のものしかエンコードされません。disable_html_ns
(ブール値): パーサーが HTML5 名前空間を DOM ドキュメントに自動的に割り当てないようにします。これは、名前空間を認識しない DOM ツール用です。target_document
(DOMDocument): 解析されたノードの宛先として使用される DOM ドキュメント。implicit_namespaces
(配列): パーサーによって使用される名前空間の関連配列。名前はタグプレフィックス、値はNS URIです。 このライブラリは、よりカスタマイズされた HTML5 ツールを作成するために使用できる次の低レベル API を提供します。
単体テストは API の各部分を実行し、すべての公開関数が十分に文書化されています。
パーサーは次のように設計されています。
Scanner
パーサーに代わってスキャンを処理します。Tokenizer
スキャナーからデータを要求し、それを解析して分類し、 EventHandler
に送信します。再帰降下パーサーです。EventHandler
トークン化中に発生する特定のセマンティック イベントごとに通知とデータを受け取ります。DOMBuilder
トークン化イベントをリッスンし、イベントに基づいてドキュメント ツリー ( DOMDocument
) を構築するEventHandler
です。シリアライザーはデータ構造 ( DOMDocument
) を取得し、それを文字表現 (HTML5 ドキュメント) に変換します。
シリアライザーは 3 つの部分に分かれています。
OutputRules
DOM 要素を文字列に変換するためのルールが含まれています。ルールは、さまざまなルール セットの使用を可能にするインターフェイスRulesInterface
の実装です。Traverser
、これは特別な目的のツリーウォーカーです。ツリー内の各ノードを訪問し、 OutputRules
使用してノードを文字列に変換します。HTML5
Traverser
管理し、結果のデータを正しい場所に保存します。シリアライザー ( save()
、 saveHTML()
) は、HTML 5.0 仕様のセクション 8.9 に従います。したがって、タグは次の規則に従ってシリアル化されます。
完全なリストについては問題キューを確認してください。ただし、現在ロードマップに載っていない既知の問題は次のとおりです。
:
特別な意味はありません。デフォルトでは、パーサーは:
による XML スタイルの名前空間をサポートしません。 XML 名前空間を有効にするには、「XML 名前空間」セクションを参照してください。XML スタイルの名前空間を使用するには、メインのHTML5
インスタンスを適切に構成する必要があります。
use Masterminds HTML5 ;
$ html = new HTML5 ( array (
" xmlNamespaces " => true
));
$ dom = $ html -> loadHTML ( ' <t:tag xmlns:t="http://www.example.com"/> ' );
$ dom -> documentElement -> namespaceURI ; // http://www.example.com
名前空間宣言を必要としないデフォルトのプレフィックスを追加することもできますが、その要素には名前空間が設定されます。
use Masterminds HTML5 ;
$ html = new HTML5 ( array (
" implicitNamespaces " => array (
" t " => " http://www.example.com "
)
));
$ dom = $ html -> loadHTML ( ' <t:tag/> ' );
$ dom -> documentElement -> namespaceURI ; // http://www.example.com
大小を問わずパッチの献身的な (そして忍耐強い) 貢献者。すでにこのライブラリを改良してくれています。貢献者のリストについては、CREDITS ファイルを参照してください。
私たちは html5lib のオリジナルの作者に多大な感謝の気持ちを持っています。
元のパーサーはほとんど残っていないものの、html5lib ライブラリを読んで多くのことを学びました。そして、いくつかの破片がここに残っています。特に、UTF-8 および Unicode 処理の多くは html5lib プロジェクトから派生しています。
このソフトウェアは MIT ライセンスに基づいてリリースされています。オリジナルの html5lib ライブラリも MIT ライセンスの下でリリースされました。
LICENSE.txtを参照
特定のファイルには、html5lib に関係する特定の個人による著作権主張が含まれています。これらは必要に応じて保存されています。