우크라이나에는 지금 여러분의 도움이 필요합니다!
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-con conflict/
- 우크라이나에 도움을 제공하도록 정치 대표자들에게 압력을 가하세요.
- 우크라이나 국민을 믿으십시오. 그들은 항복하지 않을 것이며 또 다른 우크라이나는 없습니다.
감사합니다!
HTML5는 표준을 준수하는 HTML5 파서이자 작성기로서 전적으로 PHP로 작성되었습니다. 안정적이고 많은 제작 웹사이트에서 사용되고 있으며 다운로드 수는 500만 건이 넘습니다.
HTML5는 다음과 같은 기능을 제공합니다.
Composer를 사용하여 HTML5-PHP를 설치합니다.
composer.json
파일에 masterminds/html5
종속성을 추가하면 다음과 같습니다.
{
"require" : {
"masterminds/html5" : " ^2.0 "
},
}
작성기 실행 파일을 통해 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
(boolean): 직렬 변환기가 문자를 엔터티로 적극적으로 인코딩해야 함을 나타냅니다. 이것이 없으면 최소한의 것만 인코딩합니다.disable_html_ns
(부울): 파서가 HTML5 네임스페이스를 DOM 문서에 자동으로 할당하는 것을 방지합니다. 이는 네임스페이스를 인식하지 않는 DOM 도구용입니다.target_document
(DOMDocument): 구문 분석된 노드의 대상으로 사용될 DOM 문서입니다.implicit_namespaces
(array): 파서가 사용해야 하는 네임스페이스의 연관 배열입니다. 이름은 태그 접두사이고 값은 NS URI입니다. 이 라이브러리는 보다 맞춤화된 HTML5 도구를 만드는 데 사용할 수 있는 다음과 같은 하위 수준 API를 제공합니다.
단위 테스트는 API의 각 부분을 실행하며 모든 공개 기능은 잘 문서화되어 있습니다.
파서는 다음과 같이 설계되었습니다.
Scanner
파서를 대신하여 스캔을 처리합니다.Tokenizer
스캐너에서 데이터를 요청하고 이를 구문 분석하고 분류한 후 EventHandler
로 보냅니다. 재귀 하강 파서입니다.EventHandler
토큰화 중에 발생하는 각 특정 의미 이벤트에 대한 알림과 데이터를 수신합니다.DOMBuilder
는 토큰화 이벤트를 수신하고 이벤트를 기반으로 문서 트리( DOMDocument
)를 빌드하는 EventHandler
입니다. 직렬 변환기는 데이터 구조( 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
이미 이 라이브러리를 더 좋게 만든 크고 작은 패치의 헌신적인(그리고 참을성 있는) 기여자입니다. 기여자 목록은 CREDITS 파일을 참조하세요.
우리는 html5lib의 원저자들에게 큰 빚을 지고 있습니다.
원본 파서가 많이 남아 있지는 않지만 html5lib 라이브러리를 읽으면서 많은 것을 배웠습니다. 그리고 여기에는 일부 조각이 남아 있습니다. 특히 UTF-8 및 유니코드 처리의 대부분은 html5lib 프로젝트에서 파생되었습니다.
이 소프트웨어는 MIT 라이센스에 따라 배포됩니다. 원본 html5lib 라이브러리도 MIT 라이센스로 출시되었습니다.
LICENSE.txt를 참조하세요.
특정 파일에는 html5lib와 관련된 특정 개인의 저작권 주장이 포함되어 있습니다. 이는 적절한 경우 유지되었습니다.