УКРАИНЕ НУЖНА ВАША ПОМОЩЬ СЕЙЧАС!
24 февраля 2022 года президент России Владимир Путин отдал приказ о вторжении российских вооруженных сил на Украину.
Ваша поддержка срочно необходима.
- Сделайте пожертвование волонтёрам. Вот волонтерский фонд, который помогает украинской армии обеспечить всю необходимую технику: https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi- армии или https://savelife.in.ua/en/donate/
- Трижды проверьте источники в социальных сетях. Российская дезинформация пытается скрыть и исказить реальность на Украине.
- Помогите украинским беженцам, спасающимся от российских атак и обстрелов: https://www.globalcitizen.org/en/content/ways-to-help-ukraine-conflict/
- Окажите давление на своих политических представителей, чтобы они оказали помощь Украине.
- Верьте в украинский народ, он не сдастся, другой Украины у него нет.
СПАСИБО!
HTML5 — это совместимый со стандартами анализатор и средство записи HTML5, полностью написанный на PHP. Он стабилен и используется на многих производственных веб-сайтах, его скачали более пяти миллионов раз.
HTML5 предоставляет следующие возможности.
Установите HTML5-PHP с помощью композитора.
Добавив зависимость masterminds/html5
в файл composer.json
:
{
"require" : {
"masterminds/html5" : " ^2.0 "
},
}
Вызвав команду require через исполняемый файл композитора:
composer require masterminds/html5
HTML5-PHP имеет API высокого уровня и API низкого уровня.
Вот как вы используете высокоуровневый API библиотеки HTML5
:
<?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. Эта библиотека предоставляет следующие низкоуровневые API, которые можно использовать для создания более настраиваемых инструментов HTML5:
Модульные тесты проверяют каждую часть API, и каждая общедоступная функция хорошо документирована.
Парсер устроен следующим образом:
Scanner
выполняет сканирование от имени анализатора.Tokenizer
запрашивает данные со сканера, анализирует их, классифицирует и отправляет в EventHandler
. Это парсер рекурсивного спуска.EventHandler
получает уведомления и данные для каждого конкретного семантического события, происходящего во время токенизации.DOMBuilder
— это EventHandler
, который прослушивает события токенизации и строит дерево документов ( DOMDocument
) на основе этих событий. Сериализатор берет структуру данных ( DOMDocument
) и преобразует ее в символьное представление — документ HTML5.
Сериализатор разбит на три части:
OutputRules
содержит правила для преобразования элементов DOM в строки. Правила представляют собой реализацию интерфейса RulesInterface
позволяющую использовать различные наборы правил.Traverser
— специальный ходунок по деревьям. Он посещает каждый узел в дереве и использует OutputRules
для преобразования узла в строку.HTML5
управляет Traverser
и сохраняет полученные данные в нужном месте. Сериализатор ( save()
, saveHTML()
) соответствует разделу 8.9 спецификации HTML 5.0. Итак, теги сериализуются в соответствии со следующими правилами:
Пожалуйста, проверьте очередь проблем, чтобы получить полный список, но ниже приведены известные проблемы, которые в настоящее время не включены в план действий:
:
не имеет особого значения. По умолчанию анализатор не поддерживает пространства имен в стиле 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. Они были сохранены там, где это было необходимо.