烏克蘭現在需要您的幫助!
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 是完全用 PHP 寫的符合標準的 HTML5 解析器和編寫器。它很穩定並在許多生產網站中使用,下載量遠遠超過五百萬次。
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
(boolean):防止解析器自動將 HTML5 命名空間指派給 DOM 文件。這適用於非命名空間感知的 DOM 工具。target_document
(DOMDocument):將用作解析節點的目標的 DOM 文件。implicit_namespaces
(陣列):解析器應使用的命名空間的關聯數組。名稱是標籤前綴,值是 NS URI。 該庫提供了以下低階 API,您可以使用它們來建立更多自訂的 HTML5 工具:
單元測試測試了 API 的每個部分,並且每個公共函數都有詳細的文檔記錄。
解析器的設計如下:
Scanner
代表解析器處理掃描。Tokenizer
從掃描器請求數據,對其進行解析、分類,然後將其傳送到EventHandler
。它是一個遞歸下降解析器。EventHandler
接收標記化期間發生的每個特定語意事件的通知和資料。DOMBuilder
是一個EventHandler
,用於偵聽標記化事件並基於事件建立文件樹 ( DOMDocument
)。序列化程式採用資料結構( DOMDocument
)並將其轉換為字元表示形式-HTML5 文件。
序列化器分為三個部分:
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
大大小小的補丁的專注(和耐心)貢獻者已經使這個庫變得更好。
我們非常感謝 html5lib 的原作者。
雖然原始解析器的內容已所剩無幾,但我們從閱讀 html5lib 庫中學到了很多東西。還有一些碎片留在這裡。特別是,大部分 UTF-8 和 Unicode 處理都源自於 html5lib 專案。
該軟體是根據 MIT 許可證發布的。原始的 html5lib 函式庫也是在 MIT 許可下發布的。
請參閱 LICENSE.txt
某些文件包含涉及 html5lib 的特定個人的版權聲明。這些已在適當的情況下保留。