]> git.mxchange.org Git - friendica.git/blob - library/HTML5/Parser.php
fix account_type
[friendica.git] / library / HTML5 / Parser.php
1 <?php
2
3 require_once dirname(__FILE__) . '/Data.php';
4 require_once dirname(__FILE__) . '/InputStream.php';
5 require_once dirname(__FILE__) . '/TreeBuilder.php';
6 require_once dirname(__FILE__) . '/Tokenizer.php';
7
8 /**
9  * Outwards facing interface for HTML5.
10  */
11 class HTML5_Parser
12 {
13     /**
14      * Parses a full HTML document.
15      * @param $text HTML text to parse
16      * @param $builder Custom builder implementation
17      * @return Parsed HTML as DOMDocument
18      */
19     static public function parse($text, $builder = null) {
20
21         // Cleanup invalid HTML
22         $doc = new DOMDocument();
23
24         if (mb_detect_encoding($text, "UTF-8", true) == "UTF-8")
25                 @$doc->loadHTML('<?xml encoding="UTF-8" ?>'.$text);
26         else
27                 @$doc->loadHTML($text);
28
29         $text = $doc->saveHTML();
30
31         $tokenizer = new HTML5_Tokenizer($text, $builder);
32         $tokenizer->parse();
33         return $tokenizer->save();
34     }
35     /**
36      * Parses an HTML fragment.
37      * @param $text HTML text to parse
38      * @param $context String name of context element to pretend parsing is in.
39      * @param $builder Custom builder implementation
40      * @return Parsed HTML as DOMDocument
41      */
42     static public function parseFragment($text, $context = null, $builder = null) {
43         $tokenizer = new HTML5_Tokenizer($text, $builder);
44         $tokenizer->parseFragment($context);
45         return $tokenizer->save();
46     }
47 }