| 1 |  |  | <?php | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  | /* | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  | htmLawed 1.2.4.1, 12 September 2017 | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  | Copyright Santosh Patnaik | 
            
                                                                                                            
                            
            
                                    
            
            
                | 6 |  |  | Dual licensed with LGPL 3 and GPL 2+ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 7 |  |  | A PHP Labware internal utility - www.bioinformatics.org/phplabware/internal_utilities/htmLawed | 
            
                                                                                                            
                            
            
                                    
            
            
                | 8 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 9 |  |  | See htmLawed_README.txt/htm | 
            
                                                                                                            
                            
            
                                    
            
            
                | 10 |  |  | */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 11 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 12 |  |  | /** | 
            
                                                                                                            
                            
            
                                    
            
            
                | 13 |  |  |  * @param string $t | 
            
                                                                                                            
                            
            
                                    
            
            
                | 14 |  |  |  * @param int|array $C | 
            
                                                                                                            
                            
            
                                    
            
            
                | 15 |  |  |  * @param array|string $S | 
            
                                                                                                            
                            
            
                                    
            
            
                | 16 |  |  |  * @return string | 
            
                                                                                                            
                            
            
                                    
            
            
                | 17 |  |  |  */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 18 |  |  | function htmLawed($t, $C = 1, $S = array()) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 19 | 1731 |  |     $C = is_array($C) ? $C : array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 20 | 1731 |  |     if (!empty($C['valid_xhtml'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 21 |  |  |         $C['elements'] = empty($C['elements']) ? '*-acronym-big-center-dir-font-isindex-s-strike-tt' : $C['elements']; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 22 |  |  |         $C['make_tag_strict'] = isset($C['make_tag_strict']) ? $C['make_tag_strict'] : 2; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 23 |  |  |         $C['xml:lang'] = isset($C['xml:lang']) ? $C['xml:lang'] : 2; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 24 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 25 |  |  | // config eles | 
            
                                                                                                            
                            
            
                                    
            
            
                | 26 | 1731 |  |     $e = array('a' => 1, 'abbr' => 1, 'acronym' => 1, 'address' => 1, 'applet' => 1, 'area' => 1, 'article' => 1, 'aside' => 1, 'audio' => 1, 'b' => 1, 'bdi' => 1, 'bdo' => 1, 'big' => 1, 'blockquote' => 1, 'br' => 1, 'button' => 1, 'canvas' => 1, 'caption' => 1, 'center' => 1, 'cite' => 1, 'code' => 1, 'col' => 1, 'colgroup' => 1, 'command' => 1, 'data' => 1, 'datalist' => 1, 'dd' => 1, 'del' => 1, 'details' => 1, 'dfn' => 1, 'dir' => 1, 'div' => 1, 'dl' => 1, 'dt' => 1, 'em' => 1, 'embed' => 1, 'fieldset' => 1, 'figcaption' => 1, 'figure' => 1, 'font' => 1, 'footer' => 1, 'form' => 1, 'h1' => 1, 'h2' => 1, 'h3' => 1, 'h4' => 1, 'h5' => 1, 'h6' => 1, 'header' => 1, 'hgroup' => 1, 'hr' => 1, 'i' => 1, 'iframe' => 1, 'img' => 1, 'input' => 1, 'ins' => 1, 'isindex' => 1, 'kbd' => 1, 'keygen' => 1, 'label' => 1, 'legend' => 1, 'li' => 1, 'link' => 1, 'main' => 1, 'map' => 1, 'mark' => 1, 'menu' => 1, 'meta' => 1, 'meter' => 1, 'nav' => 1, 'noscript' => 1, 'object' => 1, 'ol' => 1, 'optgroup' => 1, 'option' => 1, 'output' => 1, 'p' => 1, 'param' => 1, 'pre' => 1, 'progress' => 1, 'q' => 1, 'rb' => 1, 'rbc' => 1, 'rp' => 1, 'rt' => 1, 'rtc' => 1, 'ruby' => 1, 's' => 1, 'samp' => 1, 'script' => 1, 'section' => 1, 'select' => 1, 'small' => 1, 'source' => 1, 'span' => 1, 'strike' => 1, 'strong' => 1, 'style' => 1, 'sub' => 1, 'summary' => 1, 'sup' => 1, 'table' => 1, 'tbody' => 1, 'td' => 1, 'textarea' => 1, 'tfoot' => 1, 'th' => 1, 'thead' => 1, 'time' => 1, 'tr' => 1, 'track' => 1, 'tt' => 1, 'u' => 1, 'ul' => 1, 'var' => 1, 'video' => 1, 'wbr' => 1); // 118 incl. deprecated & some Ruby | 
            
                                                                                                            
                            
            
                                    
            
            
                | 27 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 28 | 1731 |  |     if (!empty($C['safe'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 29 | 559 |  |         unset($e['applet'], $e['audio'], $e['canvas'], $e['embed'], $e['iframe'], $e['object'], $e['script'], $e['video']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 30 | 559 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 31 | 1731 |  |     $x = !empty($C['elements']) ? str_replace(array("\n", "\r", "\t", ' '), '', $C['elements']) : '*'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 32 | 1731 |  |     if ($x == '-*') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 33 |  |  |         $e = array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 34 | 1731 |  |     } elseif (strpos($x, '*') === false) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 35 |  |  |         $e = array_flip(explode(',', $x)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 36 |  |  |     } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 37 | 1731 |  |         if (isset($x[1])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 38 | 1163 |  |             preg_match_all('`(?:^|-|\+)[^\-+]+?(?=-|\+|$)`', $x, $m, PREG_SET_ORDER); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 39 | 1163 |  |             for ($i = count($m); --$i >= 0;) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 40 | 1163 |  |                 $m[$i] = $m[$i][0]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 41 | 1163 |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 42 | 1163 |  |             foreach ($m as $v) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 43 | 1163 |  |                 if ($v[0] == '+') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 44 |  |  |                     $e[substr($v, 1)] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 45 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 46 | 1163 |  |                 if ($v[0] == '-' && isset($e[($v = substr($v, 1))]) && !in_array('+'.$v, $m)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 47 | 1163 |  |                     unset($e[$v]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 48 | 1163 |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 49 | 1163 |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 50 | 1163 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 51 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 52 | 1731 |  |     $C['elements'] =& $e; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 53 |  |  | // config attrs | 
            
                                                                                                            
                            
            
                                    
            
            
                | 54 | 1731 |  |     $x = !empty($C['deny_attribute']) ? strtolower(str_replace(array("\n", "\r", "\t", ' '), '', $C['deny_attribute'])) : ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 55 | 1731 |  |     $x = array_flip((isset($x[0]) && $x[0] == '*') ? str_replace('/', 'data-', explode('-', str_replace('data-', '/', $x))) : explode(',', $x.(!empty($C['safe']) ? ',on*' : ''))); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 56 | 1731 |  |     $C['deny_attribute'] = $x; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 57 |  |  | // config URLs | 
            
                                                                                                            
                            
            
                                    
            
            
                | 58 | 1731 |  |     $x = (isset($C['schemes'][2]) && strpos($C['schemes'], ':')) ? strtolower($C['schemes']) : 'href: aim, feed, file, ftp, gopher, http, https, irc, mailto, news, nntp, sftp, ssh, tel, telnet'.(empty($C['safe']) ? ', app, javascript; *: data, javascript, ' : '; *:').'file, http, https'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 59 | 1731 |  |     $C['schemes'] = array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 60 | 1731 |  |     foreach (explode(';', str_replace(array(' ', "\t", "\r", "\n"), '', $x)) as $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 61 | 1731 |  |         $x = $x2 = null; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 62 | 1731 |  |         list($x, $x2) = explode(':', $v, 2); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 63 | 1731 |  |         if ($x2) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 64 | 1731 |  |             $C['schemes'][$x] = array_flip(explode(',', $x2)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 65 | 1731 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 66 | 1731 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 67 | 1731 |  |     if (!isset($C['schemes']['*'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 68 |  |  |         $C['schemes']['*'] = array('file' => 1, 'http' => 1, 'https' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 69 |  |  |         if (empty($C['safe'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 70 |  |  |             $C['schemes']['*'] += array('data' => 1, 'javascript' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 71 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 72 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 73 | 1731 |  |     if (!empty($C['safe']) && empty($C['schemes']['style'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 74 | 559 |  |         $C['schemes']['style'] = array('!' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 75 | 559 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 76 | 1731 |  |     $C['abs_url'] = isset($C['abs_url']) ? $C['abs_url'] : 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 77 | 1731 |  |     if (!isset($C['base_url']) or !preg_match('`^[a-zA-Z\d.+\-]+://[^/]+/(.+?/)?$`', $C['base_url'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 78 | 1731 |  |         $C['base_url'] = $C['abs_url'] = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 79 | 1731 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 80 |  |  | // config rest | 
            
                                                                                                            
                            
            
                                    
            
            
                | 81 | 1731 |  |     $C['and_mark'] = empty($C['and_mark']) ? 0 : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 82 | 1731 |  |     $C['anti_link_spam'] = (isset($C['anti_link_spam']) && is_array($C['anti_link_spam']) && count($C['anti_link_spam']) == 2 && (empty($C['anti_link_spam'][0]) or hl_regex($C['anti_link_spam'][0])) && (empty($C['anti_link_spam'][1]) or hl_regex($C['anti_link_spam'][1]))) ? $C['anti_link_spam'] : 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 83 | 1731 |  |     $C['anti_mail_spam'] = isset($C['anti_mail_spam']) ? $C['anti_mail_spam'] : 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 84 | 1731 |  |     $C['balance'] = isset($C['balance']) ? (bool)$C['balance'] : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 85 | 1731 |  |     $C['cdata'] = isset($C['cdata']) ? $C['cdata'] : (empty($C['safe']) ? 3 : 0); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 86 | 1731 |  |     $C['clean_ms_char'] = empty($C['clean_ms_char']) ? 0 : $C['clean_ms_char']; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 87 | 1731 |  |     $C['comment'] = isset($C['comment']) ? $C['comment'] : (empty($C['safe']) ? 3 : 0); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 88 | 1731 |  |     $C['css_expression'] = empty($C['css_expression']) ? 0 : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 89 | 1731 |  |     $C['direct_list_nest'] = empty($C['direct_list_nest']) ? 0 : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 90 | 1731 |  |     $C['hexdec_entity'] = isset($C['hexdec_entity']) ? $C['hexdec_entity'] : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 91 | 1731 |  |     $C['hook'] = (!empty($C['hook']) && function_exists($C['hook'])) ? $C['hook'] : 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 92 | 1731 |  |     $C['hook_tag'] = (!empty($C['hook_tag']) && function_exists($C['hook_tag'])) ? $C['hook_tag'] : 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 93 | 1731 |  |     $C['keep_bad'] = isset($C['keep_bad']) ? $C['keep_bad'] : 6; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 94 | 1731 |  |     $C['lc_std_val'] = isset($C['lc_std_val']) ? (bool)$C['lc_std_val'] : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 95 | 1731 |  |     $C['make_tag_strict'] = isset($C['make_tag_strict']) ? $C['make_tag_strict'] : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 96 | 1731 |  |     $C['named_entity'] = isset($C['named_entity']) ? (bool)$C['named_entity'] : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 97 | 1731 |  |     $C['no_deprecated_attr'] = isset($C['no_deprecated_attr']) ? $C['no_deprecated_attr'] : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 98 | 1731 |  |     $C['parent'] = isset($C['parent'][0]) ? strtolower($C['parent']) : 'body'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 99 | 1731 |  |     $C['show_setting'] = !empty($C['show_setting']) ? $C['show_setting'] : 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 100 | 1731 |  |     $C['style_pass'] = empty($C['style_pass']) ? 0 : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 101 | 1731 |  |     $C['tidy'] = empty($C['tidy']) ? 0 : $C['tidy']; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 102 | 1731 |  |     $C['unique_ids'] = isset($C['unique_ids']) && (!preg_match('`\W`', $C['unique_ids'])) ? $C['unique_ids'] : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 103 | 1731 |  |     $C['xml:lang'] = isset($C['xml:lang']) ? $C['xml:lang'] : 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 104 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 105 | 1731 |  |     if (isset($GLOBALS['C'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 106 | 1730 |  |         $reC = $GLOBALS['C']; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 107 | 1730 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 108 | 1731 |  |     $GLOBALS['C'] = $C; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 109 | 1731 |  |     $S = is_array($S) ? $S : hl_spec($S); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 110 | 1731 |  |     if (isset($GLOBALS['S'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 111 | 1730 |  |         $reS = $GLOBALS['S']; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 112 | 1730 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 113 | 1731 |  |     $GLOBALS['S'] = $S; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 114 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 115 | 1731 |  |     $t = preg_replace('`[\x00-\x08\x0b-\x0c\x0e-\x1f]`', '', $t); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 116 | 1731 |  |     if ($C['clean_ms_char']) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 117 |  |  |         $x = array("\x7f" => '', "\x80" => '€', "\x81" => '', "\x83" => 'ƒ', "\x85" => '…', "\x86" => '†', "\x87" => '‡', "\x88" => 'ˆ', "\x89" => '‰', "\x8a" => 'Š', "\x8b" => '‹', "\x8c" => 'Œ', "\x8d" => '', "\x8e" => 'Ž', "\x8f" => '', "\x90" => '', "\x95" => '•', "\x96" => '–', "\x97" => '—', "\x98" => '˜', "\x99" => '™', "\x9a" => 'š', "\x9b" => '›', "\x9c" => 'œ', "\x9d" => '', "\x9e" => 'ž', "\x9f" => 'Ÿ'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 118 |  |  |         $x = $x + ($C['clean_ms_char'] == 1 ? array("\x82" => '‚', "\x84" => '„', "\x91" => '‘', "\x92" => '’', "\x93" => '“', "\x94" => '”') : array("\x82" => '\'', "\x84" => '"', "\x91" => '\'', "\x92" => '\'', "\x93" => '"', "\x94" => '"')); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 119 |  |  |         $t = strtr($t, $x); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 120 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 121 | 1731 |  |     if ($C['cdata'] or $C['comment']) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 122 | 1172 |  |         $t = preg_replace_callback('`<!(?:(?:--.*?--)|(?:\[CDATA\[.*?\]\]))>`sm', 'hl_cmtcd', $t); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 123 | 1172 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 124 | 1731 |  |     $t = preg_replace_callback('`&([a-zA-Z][a-zA-Z0-9]{1,30}|#(?:[0-9]{1,8}|[Xx][0-9A-Fa-f]{1,7}));`', 'hl_ent', str_replace('&', '&', $t)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 125 | 1731 |  |     if ($C['unique_ids'] && !isset($GLOBALS['hl_Ids'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 126 | 1 |  |         $GLOBALS['hl_Ids'] = array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 127 | 1 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 128 | 1731 |  |     if ($C['hook']) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 129 |  |  |         $t = $C['hook']($t, $C, $S); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 130 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 131 | 1731 |  |     if ($C['show_setting'] && preg_match('`^[a-z][a-z0-9_]*$`i', $C['show_setting'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 132 |  |  |         $GLOBALS[$C['show_setting']] = array('config' => $C, 'spec' => $S, 'time' => microtime()); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 133 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 134 |  |  | // main | 
            
                                                                                                            
                            
            
                                    
            
            
                | 135 | 1731 |  |     $t = preg_replace_callback('`<(?:(?:\s|$)|(?:[^>]*(?:>|$)))|>`m', 'hl_tag', $t); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 136 | 1731 |  |     $t = $C['balance'] ? hl_bal($t, $C['keep_bad'], $C['parent']) : $t; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 137 | 1731 |  |     $t = (($C['cdata'] or $C['comment']) && strpos($t, "\x01") !== false) ? str_replace(array("\x01", "\x02", "\x03", "\x04", "\x05"), array('', '', '&', '<', '>'), $t) : $t; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 138 | 1731 |  |     $t = $C['tidy'] ? hl_tidy($t, $C['tidy'], $C['parent']) : $t; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 139 | 1731 |  |     unset($C, $e); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 140 | 1731 |  |     if (isset($reC)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 141 | 1730 |  |         $GLOBALS['C'] = $reC; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 142 | 1730 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 143 | 1731 |  |     if (isset($reS)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 144 | 1730 |  |         $GLOBALS['S'] = $reS; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 145 | 1730 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 146 | 1731 |  |     return $t; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 147 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 148 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 149 |  |  | function hl_attrval($a, $t, $p) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 150 |  |  | // check attr val against $S | 
            
                                                                                                            
                            
            
                                    
            
            
                | 151 |  |  |     static $ma = array('accesskey', 'class', 'itemtype', 'rel'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 152 |  |  |     $s = in_array($a, $ma) ? ' ' : ($a == 'srcset' ? ',' : ''); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 153 |  |  |     $r = array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 154 |  |  |     $t = !empty($s) ? explode($s, $t) : array($t); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 155 |  |  |     foreach ($t as $tk => $tv) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 156 |  |  |     $o = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 157 |  |  |         $tv = trim($tv); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 158 |  |  |         $l = strlen($tv); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 159 |  |  |     foreach ($p as $k => $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 160 |  |  |             if (!$l) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 161 |  |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 162 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 163 |  |  |         switch ($k) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 164 |  |  |             case 'maxlen': | 
            
                                                                                                            
                            
            
                                    
            
            
                | 165 |  |  |                 if ($l > $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 166 |  |  |                     $o = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 167 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 168 |  |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 169 |  |  |             case 'minlen': | 
            
                                                                                                            
                            
            
                                    
            
            
                | 170 |  |  |                 if ($l < $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 171 |  |  |                     $o = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 172 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 173 |  |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 174 |  |  |             case 'maxval': | 
            
                                                                                                            
                            
            
                                    
            
            
                | 175 |  |  |                     if ((float)($tv) > $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 176 |  |  |                     $o = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 177 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 178 |  |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 179 |  |  |             case 'minval': | 
            
                                                                                                            
                            
            
                                    
            
            
                | 180 |  |  |                     if ((float)($tv) < $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 181 |  |  |                     $o = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 182 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 183 |  |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 184 |  |  |             case 'match': | 
            
                                                                                                            
                            
            
                                    
            
            
                | 185 |  |  |                     if (!preg_match($v, $tv)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 186 |  |  |                     $o = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 187 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 188 |  |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 189 |  |  |             case 'nomatch': | 
            
                                                                                                            
                            
            
                                    
            
            
                | 190 |  |  |                     if (preg_match($v, $tv)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 191 |  |  |                     $o = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 192 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 193 |  |  |                 break; | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 194 |  | View Code Duplication |             case 'oneof': | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 195 |  |  |                 $m = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 196 |  |  |                 foreach (explode('|', $v) as $n) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 197 |  |  |                         if ($tv == $n) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 198 |  |  |                         $m = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 199 |  |  |                         break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 200 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 201 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 202 |  |  |                 $o = $m; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 203 |  |  |                 break; | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 204 |  | View Code Duplication |             case 'noneof': | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 205 |  |  |                 $m = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 206 |  |  |                 foreach (explode('|', $v) as $n) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 207 |  |  |                         if ($tv == $n) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 208 |  |  |                         $m = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 209 |  |  |                         break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 210 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 211 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 212 |  |  |                 $o = $m; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 213 |  |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 214 |  |  |             default: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 215 |  |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 216 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 217 |  |  |         if (!$o) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 218 |  |  |             break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 219 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 220 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 221 |  |  |         if ($o) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 222 |  |  |             $r[] = $tv; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 223 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 224 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 225 |  |  |     if ($s == ',') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 226 |  |  |         $s = ', '; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 227 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 228 |  |  |     $r = implode($s, $r); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 229 |  |  |     return (isset($r[0]) ? $r : (isset($p['default']) ? $p['default'] : 0)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 230 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 231 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 232 |  |  | function hl_bal($t, $do = 1, $in = 'div') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 233 |  |  | // balance tags | 
            
                                                                                                            
                            
            
                                    
            
            
                | 234 |  |  | // by content | 
            
                                                                                                            
                            
            
                                    
            
            
                | 235 | 1731 |  |     $cB = array('form' => 1, 'map' => 1, 'noscript' => 1); // Block | 
            
                                                                                                            
                            
            
                                    
            
            
                | 236 | 1731 |  |     $cE = array('area' => 1, 'br' => 1, 'col' => 1, 'command' => 1, 'embed' => 1, 'hr' => 1, 'img' => 1, 'input' => 1, 'isindex' => 1, 'keygen' => 1, 'link' => 1, 'meta' => 1, 'param' => 1, 'source' => 1, 'track' => 1, 'wbr' => 1); // Empty | 
            
                                                                                                            
                            
            
                                    
            
            
                | 237 | 1731 |  |     $cF = array('a' => 1, 'article' => 1, 'aside' => 1, 'audio' => 1, 'button' => 1, 'blockquote' => 1, 'canvas' => 1, 'del' => 1, 'details' => 1, 'div' => 1, 'dd' => 1, 'fieldset' => 1, 'figure' => 1, 'footer' => 1, 'header' => 1, 'iframe' => 1, 'ins' => 1, 'li' => 1, 'main' => 1, 'menu' => 1, 'nav' => 1, 'noscript' => 1, 'object' => 1, 'section' => 1, 'style' => 1, 'td' => 1, 'th' => 1, 'video' => 1); // Flow; later context-wise dynamic move of ins & del to $cI | 
            
                                                                                                            
                            
            
                                    
            
            
                | 238 | 1731 |  |     $cI = array('abbr' => 1, 'acronym' => 1, 'address' => 1, 'b' => 1, 'bdi' => 1, 'bdo' => 1, 'big' => 1, 'caption' => 1, 'cite' => 1, 'code' => 1, 'data' => 1, 'datalist' => 1, 'dfn' => 1, 'dt' => 1, 'em' => 1, 'figcaption' => 1, 'font' => 1, 'h1' => 1, 'h2' => 1, 'h3' => 1, 'h4' => 1, 'h5' => 1, 'h6' => 1, 'hgroup' => 1, 'i' => 1, 'kbd' => 1, 'label' => 1, 'legend' => 1, 'mark' => 1, 'meter' => 1, 'output' => 1, 'p' => 1, 'pre' => 1, 'progress' => 1, 'q' => 1, 'rb' => 1, 'rt' => 1, 's' => 1, 'samp' => 1, 'small' => 1, 'span' => 1, 'strike' => 1, 'strong' => 1, 'sub' => 1, 'summary' => 1, 'sup' => 1, 'time' => 1, 'tt' => 1, 'u' => 1, 'var' => 1); // Inline | 
            
                                                                                                            
                            
            
                                    
            
            
                | 239 | 1731 |  |     $cN = array('a' => array('a' => 1, 'address' => 1, 'button' => 1, 'details' => 1, 'embed' => 1, 'keygen' => 1, 'label' => 1, 'select' => 1, 'textarea' => 1), 'address' => array('address' => 1, 'article' => 1, 'aside' => 1, 'header' => 1, 'keygen' => 1, 'footer' => 1, 'nav' => 1, 'section' => 1), 'button' => array('a' => 1, 'address' => 1, 'button' => 1, 'details' => 1, 'embed' => 1, 'fieldset' => 1, 'form' => 1, 'iframe' => 1, 'input' => 1, 'keygen' => 1, 'label' => 1, 'select' => 1, 'textarea' => 1), 'fieldset' => array('fieldset' => 1), 'footer' => array('header' => 1, 'footer' => 1), 'form' => array('form' => 1), 'header' => array('header' => 1, 'footer' => 1), 'label' => array('label' => 1), 'main' => array('main' => 1), 'meter' => array('meter' => 1), 'noscript' => array('script' => 1), 'pre' => array('big' => 1, 'font' => 1, 'img' => 1, 'object' => 1, 'script' => 1, 'small' => 1, 'sub' => 1, 'sup' => 1), 'progress' => array('progress' => 1), 'rb' => array('ruby' => 1), 'rt' => array('ruby' => 1), 'time' => array('time' => 1),); // Illegal | 
            
                                                                                                            
                            
            
                                    
            
            
                | 240 | 1731 |  |     $cN2 = array_keys($cN); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 241 | 1731 |  |     $cS = array('colgroup' => array('col' => 1), 'datalist' => array('option' => 1), 'dir' => array('li' => 1), 'dl' => array('dd' => 1, 'dt' => 1), 'hgroup' => array('h1' => 1, 'h2' => 1, 'h3' => 1, 'h4' => 1, 'h5' => 1, 'h6' => 1), 'menu' => array('li' => 1), 'ol' => array('li' => 1), 'optgroup' => array('option' => 1), 'option' => array('#pcdata' => 1), 'rbc' => array('rb' => 1), 'rp' => array('#pcdata' => 1), 'rtc' => array('rt' => 1), 'ruby' => array('rb' => 1, 'rbc' => 1, 'rp' => 1, 'rt' => 1, 'rtc' => 1), 'select' => array('optgroup' => 1, 'option' => 1), 'script' => array('#pcdata' => 1), 'table' => array('caption' => 1, 'col' => 1, 'colgroup' => 1, 'tfoot' => 1, 'tbody' => 1, 'tr' => 1, 'thead' => 1), 'tbody' => array('tr' => 1), 'tfoot' => array('tr' => 1), 'textarea' => array('#pcdata' => 1), 'thead' => array('tr' => 1), 'tr' => array('td' => 1, 'th' => 1), 'ul' => array('li' => 1)); // Specific - immediate parent-child | 
            
                                                                                                            
                            
            
                                    
            
            
                | 242 | 1731 |  |     if ($GLOBALS['C']['direct_list_nest']) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 243 | 613 |  |         $cS['ol'] = $cS['ul'] = $cS['menu'] += array('menu' => 1, 'ol' => 1, 'ul' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 244 | 613 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 245 | 1731 |  |     $cO = array('address' => array('p' => 1), 'applet' => array('param' => 1), 'audio' => array('source' => 1, 'track' => 1), 'blockquote' => array('script' => 1), 'details' => array('summary' => 1), 'fieldset' => array('legend' => 1, '#pcdata' => 1), 'figure' => array('figcaption' => 1), 'form' => array('script' => 1), 'map' => array('area' => 1), 'object' => array('param' => 1, 'embed' => 1), 'video' => array('source' => 1, 'track' => 1)); // Other | 
            
                                                                                                            
                            
            
                                    
            
            
                | 246 | 1731 |  |     $cT = array('colgroup' => 1, 'dd' => 1, 'dt' => 1, 'li' => 1, 'option' => 1, 'p' => 1, 'td' => 1, 'tfoot' => 1, 'th' => 1, 'thead' => 1, 'tr' => 1); // Omitable closing | 
            
                                                                                                            
                            
            
                                    
            
            
                | 247 |  |  | // block/inline type; a/ins/del both type; #pcdata: text | 
            
                                                                                                            
                            
            
                                    
            
            
                | 248 | 1731 |  |     $eB = array('a' => 1, 'address' => 1, 'article' => 1, 'aside' => 1, 'blockquote' => 1, 'center' => 1, 'del' => 1, 'details' => 1, 'dir' => 1, 'dl' => 1, 'div' => 1, 'fieldset' => 1, 'figure' => 1, 'footer' => 1, 'form' => 1, 'ins' => 1, 'h1' => 1, 'h2' => 1, 'h3' => 1, 'h4' => 1, 'h5' => 1, 'h6' => 1, 'header' => 1, 'hr' => 1, 'isindex' => 1, 'main' => 1, 'menu' => 1, 'nav' => 1, 'noscript' => 1, 'ol' => 1, 'p' => 1, 'pre' => 1, 'section' => 1, 'style' => 1, 'table' => 1, 'ul' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 249 | 1731 |  |     $eI = array('#pcdata' => 1, 'a' => 1, 'abbr' => 1, 'acronym' => 1, 'applet' => 1, 'audio' => 1, 'b' => 1, 'bdi' => 1, 'bdo' => 1, 'big' => 1, 'br' => 1, 'button' => 1, 'canvas' => 1, 'cite' => 1, 'code' => 1, 'command' => 1, 'data' => 1, 'datalist' => 1, 'del' => 1, 'dfn' => 1, 'em' => 1, 'embed' => 1, 'figcaption' => 1, 'font' => 1, 'i' => 1, 'iframe' => 1, 'img' => 1, 'input' => 1, 'ins' => 1, 'kbd' => 1, 'label' => 1, 'link' => 1, 'map' => 1, 'mark' => 1, 'meta' => 1, 'meter' => 1, 'object' => 1, 'output' => 1, 'progress' => 1, 'q' => 1, 'ruby' => 1, 's' => 1, 'samp' => 1, 'select' => 1, 'script' => 1, 'small' => 1, 'span' => 1, 'strike' => 1, 'strong' => 1, 'sub' => 1, 'summary' => 1, 'sup' => 1, 'textarea' => 1, 'time' => 1, 'tt' => 1, 'u' => 1, 'var' => 1, 'video' => 1, 'wbr' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 250 | 1731 |  |     $eN = array('a' => 1, 'address' => 1, 'article' => 1, 'aside' => 1, 'big' => 1, 'button' => 1, 'details' => 1, 'embed' => 1, 'fieldset' => 1, 'font' => 1, 'footer' => 1, 'form' => 1, 'header' => 1, 'iframe' => 1, 'img' => 1, 'input' => 1, 'keygen' => 1, 'label' => 1, 'meter' => 1, 'nav' => 1, 'object' => 1, 'progress' => 1, 'ruby' => 1, 'script' => 1, 'select' => 1, 'small' => 1, 'sub' => 1, 'sup' => 1, 'textarea' => 1, 'time' => 1); // Exclude from specific ele; $cN values | 
            
                                                                                                            
                            
            
                                    
            
            
                | 251 | 1731 |  |     $eO = array('area' => 1, 'caption' => 1, 'col' => 1, 'colgroup' => 1, 'command' => 1, 'dd' => 1, 'dt' => 1, 'hgroup' => 1, 'keygen' => 1, 'legend' => 1, 'li' => 1, 'optgroup' => 1, 'option' => 1, 'param' => 1, 'rb' => 1, 'rbc' => 1, 'rp' => 1, 'rt' => 1, 'rtc' => 1, 'script' => 1, 'source' => 1, 'tbody' => 1, 'td' => 1, 'tfoot' => 1, 'thead' => 1, 'th' => 1, 'tr' => 1, 'track' => 1); // Missing in $eB & $eI | 
            
                                                                                                            
                            
            
                                    
            
            
                | 252 | 1731 |  |     $eF = $eB + $eI; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 253 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 254 |  |  | // $in sets allowed child | 
            
                                                                                                            
                            
            
                                    
            
            
                | 255 | 1731 |  |     $in = ((isset($eF[$in]) && $in != '#pcdata') or isset($eO[$in])) ? $in : 'div'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 256 | 1731 |  |     if (isset($cE[$in])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 257 |  |  |         return (!$do ? '' : str_replace(array('<', '>'), array('<', '>'), $t)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 258 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 259 | 1731 |  |     if (isset($cS[$in])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 260 |  |  |         $inOk = $cS[$in]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 261 | 1731 |  |     } elseif (isset($cI[$in])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 262 |  |  |         $inOk = $eI; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 263 |  |  |         $cI['del'] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 264 |  |  |         $cI['ins'] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 265 | 1731 |  |     } elseif (isset($cF[$in])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 266 | 1731 |  |         $inOk = $eF; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 267 | 1731 |  |         unset($cI['del'], $cI['ins']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 268 | 1731 |  |     } elseif (isset($cB[$in])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 269 |  |  |         $inOk = $eB; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 270 |  |  |         unset($cI['del'], $cI['ins']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 271 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 272 | 1731 |  |     if (isset($cO[$in])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 273 |  |  |         $inOk = $inOk + $cO[$in]; | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 274 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 275 | 1731 |  |     if (isset($cN[$in])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 276 |  |  |         $inOk = array_diff_assoc($inOk, $cN[$in]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 277 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 278 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 279 | 1731 |  |     $t = explode('<', $t); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 280 | 1731 |  |     $ok = $q = array(); // $q seq list of open non-empty ele | 
            
                                                                                                            
                            
            
                                    
            
            
                | 281 | 1731 |  |     ob_start(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 282 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 283 | 1731 |  |     for ($i = -1, $ci = count($t); ++$i < $ci;) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 284 |  |  |         // allowed $ok in parent $p | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 285 | 1731 | View Code Duplication |         if ($ql = count($q)) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 286 | 298 |  |             $p = array_pop($q); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 287 | 298 |  |             $q[] = $p; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 288 | 298 |  |             if (isset($cS[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 289 | 27 |  |                 $ok = $cS[$p]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 290 | 298 |  |             } elseif (isset($cI[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 291 | 18 |  |                 $ok = $eI; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 292 | 18 |  |                 $cI['del'] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 293 | 18 |  |                 $cI['ins'] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 294 | 279 |  |             } elseif (isset($cF[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 295 | 265 |  |                 $ok = $eF; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 296 | 265 |  |                 unset($cI['del'], $cI['ins']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 297 | 265 |  |             } elseif (isset($cB[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 298 |  |  |                 $ok = $eB; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 299 |  |  |                 unset($cI['del'], $cI['ins']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 300 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 301 | 298 |  |             if (isset($cO[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 302 | 2 |  |                 $ok = $ok + $cO[$p]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 303 | 2 |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 304 | 298 |  |             if (isset($cN[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 305 | 191 |  |                 $ok = array_diff_assoc($ok, $cN[$p]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 306 | 191 |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 307 | 298 |  |         } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 308 | 1731 |  |             $ok = $inOk; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 309 | 1731 |  |             unset($cI['del'], $cI['ins']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 310 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 311 |  |  |         // bad tags, & ele content | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 312 | 1731 | View Code Duplication |         if (isset($e) && ($do == 1 or (isset($ok['#pcdata']) && ($do == 3 or $do == 5)))) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 313 |  |  |             echo '<', $s, $e, $a, '>'; | 
                            
                    |  |  |  | 
                                                                                        
                                                                                            
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 314 |  |  |         } | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 315 | 1731 | View Code Duplication |         if (isset($x[0])) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 316 | 284 |  |             if (strlen(trim($x)) && (($ql && isset($cB[$p])) or (isset($cB[$in]) && !$ql))) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 317 |  |  |                 echo '<div>', $x, '</div>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 318 | 284 |  |             } elseif ($do < 3 or isset($ok['#pcdata'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 319 | 284 |  |                 echo $x; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 320 | 284 |  |             } elseif (strpos($x, "\x02\x04")) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 321 |  |  |                 foreach (preg_split('`(\x01\x02[^\x01\x02]+\x02\x01)`', $x, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 322 |  |  |                     echo(substr($v, 0, 2) == "\x01\x02" ? $v : ($do > 4 ? preg_replace('`\S`', '', $v) : '')); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 323 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 324 |  |  |             } elseif ($do > 4) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 325 |  |  |                 echo preg_replace('`\S`', '', $x); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 326 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 327 | 284 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 328 |  |  |         // get markup | 
            
                                                                                                            
                            
            
                                    
            
            
                | 329 | 1731 |  |         if (!preg_match('`^(/?)([a-z1-6]+)([^>]*)>(.*)`sm', $t[$i], $r)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 330 | 1731 |  |             $x = $t[$i]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 331 | 1731 |  |             continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 332 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 333 | 946 |  |         $s = null; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 334 | 946 |  |         $e = null; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 335 | 946 |  |         $a = null; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 336 | 946 |  |         $x = null; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 337 | 946 |  |         list($all, $s, $e, $a, $x) = $r; | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 338 |  |  |         // close tag | 
            
                                                                                                            
                            
            
                                    
            
            
                | 339 | 946 |  |         if ($s) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 340 | 298 |  |             if (isset($cE[$e]) or !in_array($e, $q)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 341 | 23 |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 342 |  |  |             } // Empty/unopen | 
            
                                                                                                            
                            
            
                                    
            
            
                | 343 | 287 |  |             if ($p == $e) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 344 | 286 |  |                 array_pop($q); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 345 | 286 |  |                 echo '</', $e, '>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 346 | 286 |  |                 unset($e); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 347 | 286 |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 348 |  |  |             } // Last open | 
            
                                                                                                            
                            
            
                                    
            
            
                | 349 | 1 |  |             $add = ''; // Nesting - close open tags that need to be | 
            
                                                                                                            
                            
            
                                    
            
            
                | 350 | 1 |  |             for ($j = -1, $cj = count($q); ++$j < $cj;) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 351 | 1 |  |                 if (($d = array_pop($q)) == $e) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 352 | 1 |  |                     break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 353 |  |  |                 } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 354 | 1 |  |                     $add .= "</{$d}>"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 355 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 356 | 1 |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 357 | 1 |  |             echo $add, '</', $e, '>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 358 | 1 |  |             unset($e); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 359 | 1 |  |             continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 360 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 361 |  |  |         // open tag | 
            
                                                                                                            
                            
            
                                    
            
            
                | 362 |  |  |         // $cB ele needs $eB ele as child | 
            
                                                                                                            
                            
            
                                    
            
            
                | 363 | 946 |  |         if (isset($cB[$e]) && strlen(trim($x))) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 364 |  |  |             $t[$i] = "{$e}{$a}>"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 365 |  |  |             array_splice($t, $i + 1, 0, 'div>'.$x); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 366 |  |  |             unset($e, $x); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 367 |  |  |             ++$ci; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 368 |  |  |             --$i; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 369 |  |  |             continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 370 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 371 | 946 |  |         if ((($ql && isset($cB[$p])) or (isset($cB[$in]) && !$ql)) && !isset($eB[$e]) && !isset($ok[$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 372 |  |  |             array_splice($t, $i, 0, 'div>'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 373 |  |  |             unset($e, $x); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 374 |  |  |             ++$ci; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 375 |  |  |             --$i; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 376 |  |  |             continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 377 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 378 |  |  |         // if no open ele, $in = parent; mostly immediate parent-child relation should hold | 
            
                                                                                                            
                            
            
                                    
            
            
                | 379 | 946 |  |         if (!$ql or !isset($eN[$e]) or !array_intersect($q, $cN2)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 380 | 946 |  |             if (!isset($ok[$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 381 | 20 |  |                 if ($ql && isset($cT[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 382 |  |  |                     echo '</', array_pop($q), '>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 383 |  |  |                     unset($e, $x); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 384 |  |  |                     --$i; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 385 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 386 | 20 |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 387 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 388 | 937 |  |             if ($e !== 'span' || !empty($a)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 389 | 927 |  |                 if (!isset($cE[$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 390 | 359 |  |                     $q[] = $e; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 391 | 359 |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 392 | 927 |  |                 echo '<', $e, $a, '>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 393 | 927 |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 394 | 937 |  |             unset($e); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 395 | 937 |  |             continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 396 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 397 |  |  |         // specific parent-child | 
            
                                                                                                            
                            
            
                                    
            
            
                | 398 |  |  |         if (isset($cS[$p][$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 399 |  |  |             if (!isset($cE[$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 400 |  |  |                 $q[] = $e; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 401 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 402 |  |  |             echo '<', $e, $a, '>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 403 |  |  |             unset($e); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 404 |  |  |             continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 405 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 406 |  |  |         // nesting | 
            
                                                                                                            
                            
            
                                    
            
            
                | 407 |  |  |         $add = ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 408 |  |  |         $q2 = array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 409 |  |  |         for ($k = -1, $kc = count($q); ++$k < $kc;) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 410 |  |  |             $d = $q[$k]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 411 |  |  |             $ok2 = array(); | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 412 |  |  |             if (isset($cS[$d])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 413 |  |  |                 $q2[] = $d; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 414 |  |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 415 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 416 |  |  |             $ok2 = isset($cI[$d]) ? $eI : $eF; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 417 |  |  |             if (isset($cO[$d])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 418 |  |  |                 $ok2 = $ok2 + $cO[$d]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 419 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 420 |  |  |             if (isset($cN[$d])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 421 |  |  |                 $ok2 = array_diff_assoc($ok2, $cN[$d]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 422 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 423 |  |  |             if (!isset($ok2[$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 424 |  |  |                 if (!$k && !isset($inOk[$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 425 |  |  |                     continue 2; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 426 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 427 |  |  |                 $add = "</{$d}>"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 428 |  |  |                 for (; ++$k < $kc;) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 429 |  |  |                     $add = "</{$q[$k]}>{$add}"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 430 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 431 |  |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 432 |  |  |             } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 433 |  |  |                 $q2[] = $d; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 434 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 435 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 436 |  |  |         $q = $q2; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 437 |  |  |         if (!isset($cE[$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 438 |  |  |             $q[] = $e; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 439 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 440 |  |  |         echo $add, '<', $e, $a, '>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 441 |  |  |         unset($e); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 442 |  |  |         continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 443 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 444 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 445 |  |  | // end | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 446 | 1731 | View Code Duplication |     if ($ql = count($q)) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 447 | 111 |  |         $p = array_pop($q); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 448 | 111 |  |         $q[] = $p; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 449 | 111 |  |         if (isset($cS[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 450 | 28 |  |             $ok = $cS[$p]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 451 | 111 |  |         } elseif (isset($cI[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 452 | 2 |  |             $ok = $eI; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 453 | 2 |  |             $cI['del'] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 454 | 2 |  |             $cI['ins'] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 455 | 84 |  |         } elseif (isset($cF[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 456 | 82 |  |             $ok = $eF; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 457 | 82 |  |             unset($cI['del'], $cI['ins']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 458 | 82 |  |         } elseif (isset($cB[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 459 |  |  |             $ok = $eB; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 460 |  |  |             unset($cI['del'], $cI['ins']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 461 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 462 | 111 |  |         if (isset($cO[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 463 |  |  |             $ok = $ok + $cO[$p]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 464 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 465 | 111 |  |         if (isset($cN[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 466 | 10 |  |             $ok = array_diff_assoc($ok, $cN[$p]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 467 | 10 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 468 | 111 |  |     } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 469 | 1657 |  |         $ok = $inOk; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 470 | 1657 |  |         unset($cI['del'], $cI['ins']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 471 |  |  |     } | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 472 | 1731 | View Code Duplication |     if (isset($e) && ($do == 1 or (isset($ok['#pcdata']) && ($do == 3 or $do == 5)))) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 473 |  |  |         echo '<', $s, $e, $a, '>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 474 |  |  |     } | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 475 | 1731 | View Code Duplication |     if (isset($x[0])) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 476 | 499 |  |         if (strlen(trim($x)) && (($ql && isset($cB[$p])) or (isset($cB[$in]) && !$ql))) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 477 |  |  |             echo '<div>', $x, '</div>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 478 | 499 |  |         } elseif ($do < 3 or isset($ok['#pcdata'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 479 | 499 |  |             echo $x; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 480 | 499 |  |         } elseif (strpos($x, "\x02\x04")) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 481 |  |  |             foreach (preg_split('`(\x01\x02[^\x01\x02]+\x02\x01)`', $x, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 482 |  |  |                 echo(substr($v, 0, 2) == "\x01\x02" ? $v : ($do > 4 ? preg_replace('`\S`', '', $v) : '')); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 483 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 484 |  |  |         } elseif ($do > 4) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 485 |  |  |             echo preg_replace('`\S`', '', $x); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 486 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 487 | 499 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 488 | 1731 |  |     while (!empty($q) && ($e = array_pop($q))) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 489 | 111 |  |         echo '</', $e, '>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 490 | 111 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 491 | 1731 |  |     $o = ob_get_contents(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 492 | 1731 |  |     ob_end_clean(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 493 | 1731 |  |     return $o; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 494 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 495 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 496 |  |  | function hl_cmtcd($t) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 497 |  |  | // comment/CDATA sec handler | 
            
                                                                                                            
                            
            
                                    
            
            
                | 498 | 29 |  |     $t = $t[0]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 499 | 29 |  |     global $C; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 500 | 29 |  |     if (!($v = $C[$n = $t[3] == '-' ? 'comment' : 'cdata'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 501 |  |  |         return $t; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 502 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 503 | 29 |  |     if ($v == 1) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 504 | 29 |  |         return ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 505 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 506 |  |  |     if ($n == 'comment' && $v < 4) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 507 |  |  |         if (substr(($t = preg_replace('`--+`', '-', substr($t, 4, -3))), -1) != ' ') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 508 |  |  |             $t .= ' '; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 509 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 510 |  |  |     } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 511 |  |  |         $t = substr($t, 1, -1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 512 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 513 |  |  |     $t = $v == 2 ? str_replace(array('&', '<', '>'), array('&', '<', '>'), $t) : $t; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 514 |  |  |     return str_replace(array('&', '<', '>'), array("\x03", "\x04", "\x05"), ($n == 'comment' ? "\x01\x02\x04!--$t--\x05\x02\x01" : "\x01\x01\x04$t\x05\x01\x01")); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 515 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 516 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 517 |  |  | function hl_ent($t) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 518 |  |  | // entitity handler | 
            
                                                                                                            
                            
            
                                    
            
            
                | 519 | 249 |  |     global $C; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 520 | 249 |  |     $t = $t[1]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 521 | 249 |  |     static $U = array('quot' => 1, 'amp' => 1, 'lt' => 1, 'gt' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 522 | 249 |  |     static $N = array('fnof' => '402', 'Alpha' => '913', 'Beta' => '914', 'Gamma' => '915', 'Delta' => '916', 'Epsilon' => '917', 'Zeta' => '918', 'Eta' => '919', 'Theta' => '920', 'Iota' => '921', 'Kappa' => '922', 'Lambda' => '923', 'Mu' => '924', 'Nu' => '925', 'Xi' => '926', 'Omicron' => '927', 'Pi' => '928', 'Rho' => '929', 'Sigma' => '931', 'Tau' => '932', 'Upsilon' => '933', 'Phi' => '934', 'Chi' => '935', 'Psi' => '936', 'Omega' => '937', 'alpha' => '945', 'beta' => '946', 'gamma' => '947', 'delta' => '948', 'epsilon' => '949', 'zeta' => '950', 'eta' => '951', 'theta' => '952', 'iota' => '953', 'kappa' => '954', 'lambda' => '955', 'mu' => '956', 'nu' => '957', 'xi' => '958', 'omicron' => '959', 'pi' => '960', 'rho' => '961', 'sigmaf' => '962', 'sigma' => '963', 'tau' => '964', 'upsilon' => '965', 'phi' => '966', 'chi' => '967', 'psi' => '968', 'omega' => '969', 'thetasym' => '977', 'upsih' => '978', 'piv' => '982', 'bull' => '8226', 'hellip' => '8230', 'prime' => '8242', 'Prime' => '8243', 'oline' => '8254', 'frasl' => '8260', 'weierp' => '8472', 'image' => '8465', 'real' => '8476', 'trade' => '8482', 'alefsym' => '8501', 'larr' => '8592', 'uarr' => '8593', 'rarr' => '8594', 'darr' => '8595', 'harr' => '8596', 'crarr' => '8629', 'lArr' => '8656', 'uArr' => '8657', 'rArr' => '8658', 'dArr' => '8659', 'hArr' => '8660', 'forall' => '8704', 'part' => '8706', 'exist' => '8707', 'empty' => '8709', 'nabla' => '8711', 'isin' => '8712', 'notin' => '8713', 'ni' => '8715', 'prod' => '8719', 'sum' => '8721', 'minus' => '8722', 'lowast' => '8727', 'radic' => '8730', 'prop' => '8733', 'infin' => '8734', 'ang' => '8736', 'and' => '8743', 'or' => '8744', 'cap' => '8745', 'cup' => '8746', 'int' => '8747', 'there4' => '8756', 'sim' => '8764', 'cong' => '8773', 'asymp' => '8776', 'ne' => '8800', 'equiv' => '8801', 'le' => '8804', 'ge' => '8805', 'sub' => '8834', 'sup' => '8835', 'nsub' => '8836', 'sube' => '8838', 'supe' => '8839', 'oplus' => '8853', 'otimes' => '8855', 'perp' => '8869', 'sdot' => '8901', 'lceil' => '8968', 'rceil' => '8969', 'lfloor' => '8970', 'rfloor' => '8971', 'lang' => '9001', 'rang' => '9002', 'loz' => '9674', 'spades' => '9824', 'clubs' => '9827', 'hearts' => '9829', 'diams' => '9830', 'apos' => '39', 'OElig' => '338', 'oelig' => '339', 'Scaron' => '352', 'scaron' => '353', 'Yuml' => '376', 'circ' => '710', 'tilde' => '732', 'ensp' => '8194', 'emsp' => '8195', 'thinsp' => '8201', 'zwnj' => '8204', 'zwj' => '8205', 'lrm' => '8206', 'rlm' => '8207', 'ndash' => '8211', 'mdash' => '8212', 'lsquo' => '8216', 'rsquo' => '8217', 'sbquo' => '8218', 'ldquo' => '8220', 'rdquo' => '8221', 'bdquo' => '8222', 'dagger' => '8224', 'Dagger' => '8225', 'permil' => '8240', 'lsaquo' => '8249', 'rsaquo' => '8250', 'euro' => '8364', 'nbsp' => '160', 'iexcl' => '161', 'cent' => '162', 'pound' => '163', 'curren' => '164', 'yen' => '165', 'brvbar' => '166', 'sect' => '167', 'uml' => '168', 'copy' => '169', 'ordf' => '170', 'laquo' => '171', 'not' => '172', 'shy' => '173', 'reg' => '174', 'macr' => '175', 'deg' => '176', 'plusmn' => '177', 'sup2' => '178', 'sup3' => '179', 'acute' => '180', 'micro' => '181', 'para' => '182', 'middot' => '183', 'cedil' => '184', 'sup1' => '185', 'ordm' => '186', 'raquo' => '187', 'frac14' => '188', 'frac12' => '189', 'frac34' => '190', 'iquest' => '191', 'Agrave' => '192', 'Aacute' => '193', 'Acirc' => '194', 'Atilde' => '195', 'Auml' => '196', 'Aring' => '197', 'AElig' => '198', 'Ccedil' => '199', 'Egrave' => '200', 'Eacute' => '201', 'Ecirc' => '202', 'Euml' => '203', 'Igrave' => '204', 'Iacute' => '205', 'Icirc' => '206', 'Iuml' => '207', 'ETH' => '208', 'Ntilde' => '209', 'Ograve' => '210', 'Oacute' => '211', 'Ocirc' => '212', 'Otilde' => '213', 'Ouml' => '214', 'times' => '215', 'Oslash' => '216', 'Ugrave' => '217', 'Uacute' => '218', 'Ucirc' => '219', 'Uuml' => '220', 'Yacute' => '221', 'THORN' => '222', 'szlig' => '223', 'agrave' => '224', 'aacute' => '225', 'acirc' => '226', 'atilde' => '227', 'auml' => '228', 'aring' => '229', 'aelig' => '230', 'ccedil' => '231', 'egrave' => '232', 'eacute' => '233', 'ecirc' => '234', 'euml' => '235', 'igrave' => '236', 'iacute' => '237', 'icirc' => '238', 'iuml' => '239', 'eth' => '240', 'ntilde' => '241', 'ograve' => '242', 'oacute' => '243', 'ocirc' => '244', 'otilde' => '245', 'ouml' => '246', 'divide' => '247', 'oslash' => '248', 'ugrave' => '249', 'uacute' => '250', 'ucirc' => '251', 'uuml' => '252', 'yacute' => '253', 'thorn' => '254', 'yuml' => '255'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 523 | 249 |  |     if ($t[0] != '#') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 524 | 147 |  |         return ($C['and_mark'] ? "\x06" : '&').(isset($U[$t]) ? $t : (isset($N[$t]) ? (!$C['named_entity'] ? '#'.($C['hexdec_entity'] > 1 ? 'x'.dechex($N[$t]) : $N[$t]) : $t) : 'amp;'.$t)).';'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 525 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 526 | 114 |  |     if (($n = ctype_digit($t = substr($t, 1)) ? intval($t) : hexdec(substr($t, 1))) < 9 or ($n > 13 && $n < 32) or $n == 11 or $n == 12 or ($n > 126 && $n < 160 && $n != 133) or ($n > 55295 && ($n < 57344 or ($n > 64975 && $n < 64992) or $n == 65534 or $n == 65535 or $n > 1114111))) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 527 | 37 |  |         return ($C['and_mark'] ? "\x06" : '&')."amp;#{$t};"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 528 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 529 | 78 |  |     return ($C['and_mark'] ? "\x06" : '&').'#'.(((ctype_digit($t) && $C['hexdec_entity'] < 2) or !$C['hexdec_entity']) ? $n : 'x'.dechex($n)).';'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 530 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 531 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 532 |  |  | function hl_prot($p, $c = null) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 533 |  |  | // check URL scheme | 
            
                                                                                                            
                            
            
                                    
            
            
                | 534 | 566 |  |     global $C; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 535 | 566 |  |     $b = $a = ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 536 | 566 |  |     if ($c == null) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 537 | 17 |  |         $c = 'style'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 538 | 17 |  |         $b = $p[1]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 539 | 17 |  |         $a = $p[3]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 540 | 17 |  |         $p = trim($p[2]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 541 | 17 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 542 | 566 |  |     $c = isset($C['schemes'][$c]) ? $C['schemes'][$c] : $C['schemes']['*']; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 543 | 566 |  |     static $d = 'denied:'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 544 | 566 |  |     if (isset($c['!']) && substr($p, 0, 7) != $d) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 545 | 12 |  |         $p = "$d$p"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 546 | 12 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 547 | 566 |  |     if (isset($c['*']) or !strcspn($p, '#?;') or (substr($p, 0, 7) == $d)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 548 | 127 |  |         return "{$b}{$p}{$a}"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 549 |  |  |     } // All ok, frag, query, param | 
            
                                                                                                            
                            
            
                                    
            
            
                | 550 | 545 |  |     if (preg_match('`^([^:?[@!$()*,=/\'\]]+?)(:|&#(58|x3a);|%3a|\\\\0{0,4}3a).`i', $p, $m) && !isset($c[strtolower($m[1])])) { // Denied prot | 
            
                                                                                                            
                            
            
                                    
            
            
                | 551 | 324 |  |         return "{$b}{$d}{$p}{$a}"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 552 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 553 | 223 |  |     if ($C['abs_url']) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 554 |  |  |         if ($C['abs_url'] == -1 && strpos($p, $C['base_url']) === 0) { // Make url rel | 
            
                                                                                                            
                            
            
                                    
            
            
                | 555 |  |  |             $p = substr($p, strlen($C['base_url'])); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 556 |  |  |         } elseif (empty($m[1])) { // Make URL abs | 
            
                                                                                                            
                            
            
                                    
            
            
                | 557 |  |  |             if (substr($p, 0, 2) == '//') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 558 |  |  |                 $p = substr($C['base_url'], 0, strpos($C['base_url'], ':') + 1).$p; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 559 |  |  |             } elseif ($p[0] == '/') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 560 |  |  |                 $p = preg_replace('`(^.+?://[^/]+)(.*)`', '$1', $C['base_url']).$p; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 561 |  |  |             } elseif (strcspn($p, './')) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 562 |  |  |                 $p = $C['base_url'].$p; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 563 |  |  |             } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 564 |  |  |                 preg_match('`^([a-zA-Z\d\-+.]+://[^/]+)(.*)`', $C['base_url'], $m); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 565 |  |  |                 $p = preg_replace('`(?<=/)\./`', '', $m[2].$p); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 566 |  |  |                 while (preg_match('`(?<=/)([^/]{3,}|[^/.]+?|\.[^/.]|[^/.]\.)/\.\./`', $p)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 567 |  |  |                     $p = preg_replace('`(?<=/)([^/]{3,}|[^/.]+?|\.[^/.]|[^/.]\.)/\.\./`', '', $p); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 568 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 569 |  |  |                 $p = $m[1].$p; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 570 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 571 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 572 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 573 | 223 |  |     return "{$b}{$p}{$a}"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 574 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 575 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 576 |  |  | function hl_regex($p) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 577 |  |  | // check regex | 
            
                                                                                                            
                            
            
                                    
            
            
                | 578 | 1154 |  |     if (empty($p)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 579 |  |  |         return 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 580 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 581 | 1154 |  |     if ($v = function_exists('error_clear_last') && function_exists('error_get_last')) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 582 |  |  |         error_clear_last(); | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 583 |  | View Code Duplication |     } else { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 584 | 1154 |  |         if ($t = ini_get('track_errors')) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 585 | 1154 |  |             $o = isset($php_errormsg) ? $php_errormsg : null; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 586 | 1154 |  |         } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 587 |  |  |             ini_set('track_errors', 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 588 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 589 | 1154 |  |         unset($php_errormsg); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 590 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 591 | 1154 |  |     if (($d = ini_get('display_errors'))) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 592 | 1154 |  |         ini_set('display_errors', 0); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 593 | 1154 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 594 | 1154 |  |     preg_match($p, ''); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 595 | 1154 |  |     if ($v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 596 |  |  |         $r = error_get_last() == null ? 1 : 0; | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 597 |  | View Code Duplication |     } else { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 598 | 1154 |  |         $r = isset($php_errormsg) ? 0 : 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 599 | 1154 |  |         if ($t) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 600 | 1154 |  |             $php_errormsg = isset($o) ? $o : null; | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 601 | 1154 |  |         } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 602 |  |  |             ini_set('track_errors', 0); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 603 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 604 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 605 | 1154 |  |     if ($d) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 606 | 1154 |  |         ini_set('display_errors', 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 607 | 1154 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 608 | 1154 |  |     return $r; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 609 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 610 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 611 |  |  | function hl_spec($t) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 612 |  |  | // final $spec | 
            
                                                                                                            
                            
            
                                    
            
            
                | 613 | 559 |  |     $s = array(); | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 614 | 559 |  |     if (!function_exists('hl_aux1')) { | 
            
                                                                        
                            
            
                                    
            
            
                | 615 |  |  |         function hl_aux1($m) { | 
            
                                                                        
                            
            
                                    
            
            
                | 616 |  |  |             return substr(str_replace(array(";", "|", "~", " ", ",", "/", "(", ")", '`"'), array("\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", '"'), $m[0]), 1, -1); | 
            
                                                                        
                            
            
                                    
            
            
                | 617 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 618 | 1 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 619 | 559 |  |     $t = str_replace(array("\t", "\r", "\n", ' '), '', preg_replace_callback('/"(?>(`.|[^"])*)"/sm', 'hl_aux1', trim($t))); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 620 | 559 |  |     for ($i = count(($t = explode(';', $t))); --$i >= 0;) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 621 | 559 |  |         $w = $t[$i]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 622 | 559 |  |         if (empty($w) or ($e = strpos($w, '=')) === false or !strlen(($a = substr($w, $e + 1)))) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 623 | 559 |  |             continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 624 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 625 |  |  |         $y = $n = array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 626 |  |  |         foreach (explode(',', $a) as $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 627 |  |  |             if (!preg_match('`^([a-z:\-\*]+)(?:\((.*?)\))?`i', $v, $m)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 628 |  |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 629 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 630 |  |  |             if (($x = strtolower($m[1])) == '-*') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 631 |  |  |                 $n['*'] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 632 |  |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 633 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 634 |  |  |             if ($x[0] == '-') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 635 |  |  |                 $n[substr($x, 1)] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 636 |  |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 637 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 638 |  |  |             if (!isset($m[2])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 639 |  |  |                 $y[$x] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 640 |  |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 641 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 642 |  |  |             foreach (explode('/', $m[2]) as $m) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 643 |  |  |                 if (empty($m) or ($p = strpos($m, '=')) == 0 or $p < 5) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 644 |  |  |                     $y[$x] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 645 |  |  |                     continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 646 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 647 |  |  |                 $y[$x][strtolower(substr($m, 0, $p))] = str_replace(array("\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08"), array(";", "|", "~", " ", ",", "/", "(", ")"), substr($m, $p + 1)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 648 |  |  |             } | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 649 |  | View Code Duplication |             if (isset($y[$x]['match']) && !hl_regex($y[$x]['match'])) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 650 |  |  |                 unset($y[$x]['match']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 651 |  |  |             } | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 652 |  | View Code Duplication |             if (isset($y[$x]['nomatch']) && !hl_regex($y[$x]['nomatch'])) { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 653 |  |  |                 unset($y[$x]['nomatch']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 654 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 655 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 656 |  |  |         if (!count($y) && !count($n)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 657 |  |  |             continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 658 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 659 |  |  |         foreach (explode(',', substr($w, 0, $e)) as $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 660 |  |  |             if (!strlen(($v = strtolower($v)))) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 661 |  |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 662 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 663 |  |  |             if (count($y)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 664 |  |  |                 if (!isset($s[$v])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 665 |  |  |                 $s[$v] = $y; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 666 |  |  |                 } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 667 |  |  |                     $s[$v] = array_merge($s[$v], $y); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 668 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 669 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 670 |  |  |             if (count($n)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 671 |  |  |                 if (!isset($s[$v]['n'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 672 |  |  |                 $s[$v]['n'] = $n; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 673 |  |  |                 } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 674 |  |  |                     $s[$v]['n'] = array_merge($s[$v]['n'], $n); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 675 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 676 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 677 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 678 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 679 | 559 |  |     return $s; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 680 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 681 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 682 |  |  | function hl_tag($t) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 683 |  |  | // tag/attribute handler | 
            
                                                                                                            
                            
            
                                    
            
            
                | 684 | 1637 |  |     global $C; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 685 | 1637 |  |     $t = $t[0]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 686 |  |  | // invalid < > | 
            
                                                                                                            
                            
            
                                    
            
            
                | 687 | 1637 |  |     if ($t == '< ') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 688 |  |  |         return '< '; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 689 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 690 | 1637 |  |     if ($t == '>') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 691 | 200 |  |         return '>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 692 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 693 | 1637 |  |     if (!preg_match('`^<(/?)([a-zA-Z][a-zA-Z1-6]*)([^>]*?)\s?>$`m', $t, $m)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 694 | 91 |  |         return str_replace(array('<', '>'), array('<', '>'), $t); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 695 | 1583 |  |     } elseif (!isset($C['elements'][($e = strtolower($m[2]))])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 696 | 721 |  |         return (($C['keep_bad'] % 2) ? str_replace(array('<', '>'), array('<', '>'), $t) : ''); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 697 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 698 |  |  | // attr string | 
            
                                                                                                            
                            
            
                                    
            
            
                | 699 | 946 |  |     $a = str_replace(array("\n", "\r", "\t"), ' ', trim($m[3])); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 700 |  |  | // tag transform | 
            
                                                                                                            
                            
            
                                    
            
            
                | 701 | 946 |  |     static $eD = array('acronym' => 1, 'applet' => 1, 'big' => 1, 'center' => 1, 'dir' => 1, 'font' => 1, 'isindex' => 1, 's' => 1, 'strike' => 1, 'tt' => 1); // Deprecated | 
            
                                                                                                            
                            
            
                                    
            
            
                | 702 | 946 |  |     if ($C['make_tag_strict'] && isset($eD[$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 703 | 1 |  |         $trt = hl_tag2($e, $a, $C['make_tag_strict']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 704 | 1 |  |         if (!$e) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 705 |  |  |             return (($C['keep_bad'] % 2) ? str_replace(array('<', '>'), array('<', '>'), $t) : ''); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 706 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 707 | 1 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 708 |  |  | // close tag | 
            
                                                                                                            
                            
            
                                    
            
            
                | 709 | 946 |  |     static $eE = array('area' => 1, 'br' => 1, 'col' => 1, 'command' => 1, 'embed' => 1, 'hr' => 1, 'img' => 1, 'input' => 1, 'isindex' => 1, 'keygen' => 1, 'link' => 1, 'meta' => 1, 'param' => 1, 'source' => 1, 'track' => 1, 'wbr' => 1); // Empty ele | 
            
                                                                                                            
                            
            
                                    
            
            
                | 710 | 946 |  |     if (!empty($m[1])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 711 | 311 |  |         return (!isset($eE[$e]) ? (empty($C['hook_tag']) ? "</$e>" : $C['hook_tag']($e)) : (($C['keep_bad']) % 2 ? str_replace(array('<', '>'), array('<', '>'), $t) : '')); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 712 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 713 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 714 |  |  | // open tag & attr | 
            
                                                                                                            
                            
            
                                    
            
            
                | 715 | 946 |  |     static $aN = array('abbr' => array('td' => 1, 'th' => 1), 'accept' => array('form' => 1, 'input' => 1), 'accept-charset' => array('form' => 1), 'action' => array('form' => 1), 'align' => array('applet' => 1, 'caption' => 1, 'col' => 1, 'colgroup' => 1, 'div' => 1, 'embed' => 1, 'h1' => 1, 'h2' => 1, 'h3' => 1, 'h4' => 1, 'h5' => 1, 'h6' => 1, 'hr' => 1, 'iframe' => 1, 'img' => 1, 'input' => 1, 'legend' => 1, 'object' => 1, 'p' => 1, 'table' => 1, 'tbody' => 1, 'td' => 1, 'tfoot' => 1, 'th' => 1, 'thead' => 1, 'tr' => 1), 'allowfullscreen' => array('iframe' => 1), 'alt' => array('applet' => 1, 'area' => 1, 'img' => 1, 'input' => 1), 'archive' => array('applet' => 1, 'object' => 1), 'async' => array('script' => 1), 'autocomplete' => array('form' => 1, 'input' => 1), 'autofocus' => array('button' => 1, 'input' => 1, 'keygen' => 1, 'select' => 1, 'textarea' => 1), 'autoplay' => array('audio' => 1, 'video' => 1), 'axis' => array('td' => 1, 'th' => 1), 'bgcolor' => array('embed' => 1, 'table' => 1, 'td' => 1, 'th' => 1, 'tr' => 1), 'border' => array('img' => 1, 'object' => 1, 'table' => 1), 'bordercolor' => array('table' => 1, 'td' => 1, 'tr' => 1), 'cellpadding' => array('table' => 1), 'cellspacing' => array('table' => 1), 'challenge' => array('keygen' => 1), 'char' => array('col' => 1, 'colgroup' => 1, 'tbody' => 1, 'td' => 1, 'tfoot' => 1, 'th' => 1, 'thead' => 1, 'tr' => 1), 'charoff' => array('col' => 1, 'colgroup' => 1, 'tbody' => 1, 'td' => 1, 'tfoot' => 1, 'th' => 1, 'thead' => 1, 'tr' => 1), 'charset' => array('a' => 1, 'script' => 1), 'checked' => array('command' => 1, 'input' => 1), 'cite' => array('blockquote' => 1, 'del' => 1, 'ins' => 1, 'q' => 1), 'classid' => array('object' => 1), 'clear' => array('br' => 1), 'code' => array('applet' => 1), 'codebase' => array('applet' => 1, 'object' => 1), 'codetype' => array('object' => 1), 'color' => array('font' => 1), 'cols' => array('textarea' => 1), 'colspan' => array('td' => 1, 'th' => 1), 'compact' => array('dir' => 1, 'dl' => 1, 'menu' => 1, 'ol' => 1, 'ul' => 1), 'content' => array('meta' => 1), 'controls' => array('audio' => 1, 'video' => 1), 'coords' => array('a' => 1, 'area' => 1), 'crossorigin' => array('img' => 1), 'data' => array('object' => 1), 'datetime' => array('del' => 1, 'ins' => 1, 'time' => 1), 'declare' => array('object' => 1), 'default' => array('track' => 1), 'defer' => array('script' => 1), 'dirname' => array('input' => 1, 'textarea' => 1), 'disabled' => array('button' => 1, 'command' => 1, 'fieldset' => 1, 'input' => 1, 'keygen' => 1, 'optgroup' => 1, 'option' => 1, 'select' => 1, 'textarea' => 1), 'download' => array('a' => 1), 'enctype' => array('form' => 1), 'face' => array('font' => 1), 'flashvars' => array('embed' => 1), 'for' => array('label' => 1, 'output' => 1), 'form' => array('button' => 1, 'fieldset' => 1, 'input' => 1, 'keygen' => 1, 'label' => 1, 'object' => 1, 'output' => 1, 'select' => 1, 'textarea' => 1), 'formaction' => array('button' => 1, 'input' => 1), 'formenctype' => array('button' => 1, 'input' => 1), 'formmethod' => array('button' => 1, 'input' => 1), 'formnovalidate' => array('button' => 1, 'input' => 1), 'formtarget' => array('button' => 1, 'input' => 1), 'frame' => array('table' => 1), 'frameborder' => array('iframe' => 1), 'headers' => array('td' => 1, 'th' => 1), 'height' => array('applet' => 1, 'canvas' => 1, 'embed' => 1, 'iframe' => 1, 'img' => 1, 'input' => 1, 'object' => 1, 'td' => 1, 'th' => 1, 'video' => 1), 'high' => array('meter' => 1), 'href' => array('a' => 1, 'area' => 1, 'link' => 1), 'hreflang' => array('a' => 1, 'area' => 1, 'link' => 1), 'hspace' => array('applet' => 1, 'embed' => 1, 'img' => 1, 'object' => 1), 'icon' => array('command' => 1), 'ismap' => array('img' => 1, 'input' => 1), 'keyparams' => array('keygen' => 1), 'keytype' => array('keygen' => 1), 'kind' => array('track' => 1), 'label' => array('command' => 1, 'menu' => 1, 'option' => 1, 'optgroup' => 1, 'track' => 1), 'language' => array('script' => 1), 'list' => array('input' => 1), 'longdesc' => array('img' => 1, 'iframe' => 1), 'loop' => array('audio' => 1, 'video' => 1), 'low' => array('meter' => 1), 'marginheight' => array('iframe' => 1), 'marginwidth' => array('iframe' => 1), 'max' => array('input' => 1, 'meter' => 1, 'progress' => 1), 'maxlength' => array('input' => 1, 'textarea' => 1), 'media' => array('a' => 1, 'area' => 1, 'link' => 1, 'source' => 1, 'style' => 1), 'mediagroup' => array('audio' => 1, 'video' => 1), 'method' => array('form' => 1), 'min' => array('input' => 1, 'meter' => 1), 'model' => array('embed' => 1), 'multiple' => array('input' => 1, 'select' => 1), 'muted' => array('audio' => 1, 'video' => 1), 'name' => array('a' => 1, 'applet' => 1, 'button' => 1, 'embed' => 1, 'fieldset' => 1, 'form' => 1, 'iframe' => 1, 'img' => 1, 'input' => 1, 'keygen' => 1, 'map' => 1, 'object' => 1, 'output' => 1, 'param' => 1, 'select' => 1, 'textarea' => 1), 'nohref' => array('area' => 1), 'noshade' => array('hr' => 1), 'novalidate' => array('form' => 1), 'nowrap' => array('td' => 1, 'th' => 1), 'object' => array('applet' => 1), 'open' => array('details' => 1), 'optimum' => array('meter' => 1), 'pattern' => array('input' => 1), 'ping' => array('a' => 1, 'area' => 1), 'placeholder' => array('input' => 1, 'textarea' => 1), 'pluginspage' => array('embed' => 1), 'pluginurl' => array('embed' => 1), 'poster' => array('video' => 1), 'pqg' => array('keygen' => 1), 'preload' => array('audio' => 1, 'video' => 1), 'prompt' => array('isindex' => 1), 'pubdate' => array('time' => 1), 'radiogroup' => array('command' => 1), 'readonly' => array('input' => 1, 'textarea' => 1), 'rel' => array('a' => 1, 'area' => 1, 'link' => 1), 'required' => array('input' => 1, 'select' => 1, 'textarea' => 1), 'rev' => array('a' => 1), 'reversed' => array('ol' => 1), 'rows' => array('textarea' => 1), 'rowspan' => array('td' => 1, 'th' => 1), 'rules' => array('table' => 1), 'sandbox' => array('iframe' => 1), 'scope' => array('td' => 1, 'th' => 1), 'scoped' => array('style' => 1), 'scrolling' => array('iframe' => 1), 'seamless' => array('iframe' => 1), 'selected' => array('option' => 1), 'shape' => array('a' => 1, 'area' => 1), 'size' => array('font' => 1, 'hr' => 1, 'input' => 1, 'select' => 1), 'sizes' => array('link' => 1), 'span' => array('col' => 1, 'colgroup' => 1), 'src' => array('audio' => 1, 'embed' => 1, 'iframe' => 1, 'img' => 1, 'input' => 1, 'script' => 1, 'source' => 1, 'track' => 1, 'video' => 1), 'srcdoc' => array('iframe' => 1), 'srclang' => array('track' => 1), 'srcset' => array('img' => 1), 'standby' => array('object' => 1), 'start' => array('ol' => 1), 'step' => array('input' => 1), 'summary' => array('table' => 1), 'target' => array('a' => 1, 'area' => 1, 'form' => 1), 'type' => array('a' => 1, 'area' => 1, 'button' => 1, 'command' => 1, 'embed' => 1, 'input' => 1, 'li' => 1, 'link' => 1, 'menu' => 1, 'object' => 1, 'ol' => 1, 'param' => 1, 'script' => 1, 'source' => 1, 'style' => 1, 'ul' => 1), 'typemustmatch' => array('object' => 1), 'usemap' => array('img' => 1, 'input' => 1, 'object' => 1), 'valign' => array('col' => 1, 'colgroup' => 1, 'tbody' => 1, 'td' => 1, 'tfoot' => 1, 'th' => 1, 'thead' => 1, 'tr' => 1), 'value' => array('button' => 1, 'data' => 1, 'input' => 1, 'li' => 1, 'meter' => 1, 'option' => 1, 'param' => 1, 'progress' => 1), 'valuetype' => array('param' => 1), 'vspace' => array('applet' => 1, 'embed' => 1, 'img' => 1, 'object' => 1), 'width' => array('applet' => 1, 'canvas' => 1, 'col' => 1, 'colgroup' => 1, 'embed' => 1, 'hr' => 1, 'iframe' => 1, 'img' => 1, 'input' => 1, 'object' => 1, 'pre' => 1, 'table' => 1, 'td' => 1, 'th' => 1, 'video' => 1), 'wmode' => array('embed' => 1), 'wrap' => array('textarea' => 1)); // Ele-specific | 
            
                                                                                                            
                            
            
                                    
            
            
                | 716 | 946 |  |     static $aNA = array('aria-activedescendant' => 1, 'aria-atomic' => 1, 'aria-autocomplete' => 1, 'aria-busy' => 1, 'aria-checked' => 1, 'aria-controls' => 1, 'aria-describedby' => 1, 'aria-disabled' => 1, 'aria-dropeffect' => 1, 'aria-expanded' => 1, 'aria-flowto' => 1, 'aria-grabbed' => 1, 'aria-haspopup' => 1, 'aria-hidden' => 1, 'aria-invalid' => 1, 'aria-label' => 1, 'aria-labelledby' => 1, 'aria-level' => 1, 'aria-live' => 1, 'aria-multiline' => 1, 'aria-multiselectable' => 1, 'aria-orientation' => 1, 'aria-owns' => 1, 'aria-posinset' => 1, 'aria-pressed' => 1, 'aria-readonly' => 1, 'aria-relevant' => 1, 'aria-required' => 1, 'aria-selected' => 1, 'aria-setsize' => 1, 'aria-sort' => 1, 'aria-valuemax' => 1, 'aria-valuemin' => 1, 'aria-valuenow' => 1, 'aria-valuetext' => 1); // ARIA | 
            
                                                                                                            
                            
            
                                    
            
            
                | 717 | 946 |  |     static $aNE = array('allowfullscreen' => 1, 'checkbox' => 1, 'checked' => 1, 'command' => 1, 'compact' => 1, 'declare' => 1, 'defer' => 1, 'default' => 1, 'disabled' => 1, 'hidden' => 1, 'inert' => 1, 'ismap' => 1, 'itemscope' => 1, 'multiple' => 1, 'nohref' => 1, 'noresize' => 1, 'noshade' => 1, 'nowrap' => 1, 'open' => 1, 'radio' => 1, 'readonly' => 1, 'required' => 1, 'reversed' => 1, 'selected' => 1); // Empty | 
            
                                                                                                            
                            
            
                                    
            
            
                | 718 | 946 |  |     static $aNO = array('onabort' => 1, 'onblur' => 1, 'oncanplay' => 1, 'oncanplaythrough' => 1, 'onchange' => 1, 'onclick' => 1, 'oncontextmenu' => 1, 'oncopy' => 1, 'oncuechange' => 1, 'oncut' => 1, 'ondblclick' => 1, 'ondrag' => 1, 'ondragend' => 1, 'ondragenter' => 1, 'ondragleave' => 1, 'ondragover' => 1, 'ondragstart' => 1, 'ondrop' => 1, 'ondurationchange' => 1, 'onemptied' => 1, 'onended' => 1, 'onerror' => 1, 'onfocus' => 1, 'onformchange' => 1, 'onforminput' => 1, 'oninput' => 1, 'oninvalid' => 1, 'onkeydown' => 1, 'onkeypress' => 1, 'onkeyup' => 1, 'onload' => 1, 'onloadeddata' => 1, 'onloadedmetadata' => 1, 'onloadstart' => 1, 'onlostpointercapture' => 1, 'onmousedown' => 1, 'onmousemove' => 1, 'onmouseout' => 1, 'onmouseover' => 1, 'onmouseup' => 1, 'onmousewheel' => 1, 'onpaste' => 1, 'onpause' => 1, 'onplay' => 1, 'onplaying' => 1, 'onpointercancel' => 1, 'ongotpointercapture' => 1, 'onpointerdown' => 1, 'onpointerenter' => 1, 'onpointerleave' => 1, 'onpointermove' => 1, 'onpointerout' => 1, 'onpointerover' => 1, 'onpointerup' => 1, 'onprogress' => 1, 'onratechange' => 1, 'onreadystatechange' => 1, 'onreset' => 1, 'onsearch' => 1, 'onscroll' => 1, 'onseeked' => 1, 'onseeking' => 1, 'onselect' => 1, 'onshow' => 1, 'onstalled' => 1, 'onsubmit' => 1, 'onsuspend' => 1, 'ontimeupdate' => 1, 'ontoggle' => 1, 'ontouchcancel' => 1, 'ontouchend' => 1, 'ontouchmove' => 1, 'ontouchstart' => 1, 'onvolumechange' => 1, 'onwaiting' => 1, 'onwheel' => 1); // Event | 
            
                                                                                                            
                            
            
                                    
            
            
                | 719 | 946 |  |     static $aNP = array('action' => 1, 'cite' => 1, 'classid' => 1, 'codebase' => 1, 'data' => 1, 'href' => 1, 'itemtype' => 1, 'longdesc' => 1, 'model' => 1, 'pluginspage' => 1, 'pluginurl' => 1, 'src' => 1, 'srcset' => 1, 'usemap' => 1); // Need scheme check; excludes style, on* | 
            
                                                                                                            
                            
            
                                    
            
            
                | 720 | 946 |  |     static $aNU = array('accesskey' => 1, 'class' => 1, 'contenteditable' => 1, 'contextmenu' => 1, 'dir' => 1, 'draggable' => 1, 'dropzone' => 1, 'hidden' => 1, 'id' => 1, 'inert' => 1, 'itemid' => 1, 'itemprop' => 1, 'itemref' => 1, 'itemscope' => 1, 'itemtype' => 1, 'lang' => 1, 'role' => 1, 'spellcheck' => 1, 'style' => 1, 'tabindex' => 1, 'title' => 1, 'translate' => 1, 'xmlns' => 1, 'xml:base' => 1, 'xml:lang' => 1, 'xml:space' => 1); // Univ; excludes on*, aria* | 
            
                                                                                                            
                            
            
                                    
            
            
                | 721 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 722 | 946 |  |     if ($C['lc_std_val']) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 723 |  |  |         // predef attr vals for $eAL & $aNE ele | 
            
                                                                                                            
                            
            
                                    
            
            
                | 724 | 946 |  |         static $aNL = array('all' => 1, 'auto' => 1, 'baseline' => 1, 'bottom' => 1, 'button' => 1, 'captions' => 1, 'center' => 1, 'chapters' => 1, 'char' => 1, 'checkbox' => 1, 'circle' => 1, 'col' => 1, 'colgroup' => 1, 'color' => 1, 'cols' => 1, 'data' => 1, 'date' => 1, 'datetime' => 1, 'datetime-local' => 1, 'default' => 1, 'descriptions' => 1, 'email' => 1, 'file' => 1, 'get' => 1, 'groups' => 1, 'hidden' => 1, 'image' => 1, 'justify' => 1, 'left' => 1, 'ltr' => 1, 'metadata' => 1, 'middle' => 1, 'month' => 1, 'none' => 1, 'number' => 1, 'object' => 1, 'password' => 1, 'poly' => 1, 'post' => 1, 'preserve' => 1, 'radio' => 1, 'range' => 1, 'rect' => 1, 'ref' => 1, 'reset' => 1, 'right' => 1, 'row' => 1, 'rowgroup' => 1, 'rows' => 1, 'rtl' => 1, 'search' => 1, 'submit' => 1, 'subtitles' => 1, 'tel' => 1, 'text' => 1, 'time' => 1, 'top' => 1, 'url' => 1, 'week' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 725 | 946 |  |         static $eAL = array('a' => 1, 'area' => 1, 'bdo' => 1, 'button' => 1, 'col' => 1, 'fieldset' => 1, 'form' => 1, 'img' => 1, 'input' => 1, 'object' => 1, 'ol' => 1, 'optgroup' => 1, 'option' => 1, 'param' => 1, 'script' => 1, 'select' => 1, 'table' => 1, 'td' => 1, 'textarea' => 1, 'tfoot' => 1, 'th' => 1, 'thead' => 1, 'tr' => 1, 'track' => 1, 'xml:space' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 726 | 946 |  |         $lcase = isset($eAL[$e]) ? 1 : 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 727 | 946 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 728 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 729 | 946 |  |     $depTr = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 730 | 946 |  |     if ($C['no_deprecated_attr']) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 731 |  |  |         // depr attr:applicable ele | 
            
                                                                                                            
                            
            
                                    
            
            
                | 732 | 946 |  |         static $aND = array('align' => array('caption' => 1, 'div' => 1, 'h1' => 1, 'h2' => 1, 'h3' => 1, 'h4' => 1, 'h5' => 1, 'h6' => 1, 'hr' => 1, 'img' => 1, 'input' => 1, 'legend' => 1, 'object' => 1, 'p' => 1, 'table' => 1), 'bgcolor' => array('table' => 1, 'td' => 1, 'th' => 1, 'tr' => 1), 'border' => array('object' => 1), 'bordercolor' => array('table' => 1, 'td' => 1, 'tr' => 1), 'cellspacing' => array('table' => 1), 'clear' => array('br' => 1), 'compact' => array('dl' => 1, 'ol' => 1, 'ul' => 1), 'height' => array('td' => 1, 'th' => 1), 'hspace' => array('img' => 1, 'object' => 1), 'language' => array('script' => 1), 'name' => array('a' => 1, 'form' => 1, 'iframe' => 1, 'img' => 1, 'map' => 1), 'noshade' => array('hr' => 1), 'nowrap' => array('td' => 1, 'th' => 1), 'size' => array('hr' => 1), 'vspace' => array('img' => 1, 'object' => 1), 'width' => array('hr' => 1, 'pre' => 1, 'table' => 1, 'td' => 1, 'th' => 1)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 733 | 946 |  |         static $eAD = array('a' => 1, 'br' => 1, 'caption' => 1, 'div' => 1, 'dl' => 1, 'form' => 1, 'h1' => 1, 'h2' => 1, 'h3' => 1, 'h4' => 1, 'h5' => 1, 'h6' => 1, 'hr' => 1, 'iframe' => 1, 'img' => 1, 'input' => 1, 'legend' => 1, 'map' => 1, 'object' => 1, 'ol' => 1, 'p' => 1, 'pre' => 1, 'script' => 1, 'table' => 1, 'td' => 1, 'th' => 1, 'tr' => 1, 'ul' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 734 | 946 |  |         $depTr = isset($eAD[$e]) ? 1 : 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 735 | 946 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 736 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 737 |  |  | // attr name-vals | 
            
                                                                                                            
                            
            
                                    
            
            
                | 738 | 946 |  |     if (strpos($a, "\x01") !== false) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 739 |  |  |         $a = preg_replace('`\x01[^\x01]*\x01`', '', $a); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 740 |  |  |     } // No comment/CDATA sec | 
            
                                                                                                            
                            
            
                                    
            
            
                | 741 | 946 |  |     $mode = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 742 | 946 |  |     $a = trim($a, ' /'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 743 | 946 |  |     $aA = array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 744 | 946 |  |     while (strlen($a)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 745 | 909 |  |         $w = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 746 |  |  |         switch ($mode) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 747 | 909 |  |             case 0: // Name | 
            
                                                                                                            
                            
            
                                    
            
            
                | 748 | 909 |  |                 if (preg_match('`^[a-zA-Z][^\s=/]+`', $a, $m)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 749 | 891 |  |                     $nm = strtolower($m[0]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 750 | 891 |  |                     $w = $mode = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 751 | 891 |  |                     $a = ltrim(substr_replace($a, '', 0, strlen($m[0]))); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 752 | 891 |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 753 | 909 |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 754 | 891 |  |             case 1: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 755 | 891 |  |                 if ($a[0] == '=') { // = | 
            
                                                                                                            
                            
            
                                    
            
            
                | 756 | 891 |  |                     $w = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 757 | 891 |  |                     $mode = 2; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 758 | 891 |  |                     $a = ltrim($a, '= '); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 759 | 891 |  |                 } else { // No val | 
            
                                                                                                            
                            
            
                                    
            
            
                | 760 |  |  |                     $w = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 761 |  |  |                     $mode = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 762 |  |  |                     $a = ltrim($a); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 763 |  |  |                     $aA[$nm] = ''; | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 764 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 765 | 891 |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 766 | 891 |  |             case 2: // Val | 
            
                                                                                                            
                            
            
                                    
            
            
                | 767 | 891 |  |                 if (preg_match('`^((?:"[^"]*")|(?:\'[^\']*\')|(?:\s*[^\s"\']+))(.*)`', $a, $m)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 768 | 891 |  |                     $a = ltrim($m[2]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 769 | 891 |  |                     $m = $m[1]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 770 | 891 |  |                     $w = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 771 | 891 |  |                     $mode = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 772 | 891 |  |                     $aA[$nm] = trim(str_replace('<', '<', ($m[0] == '"' or $m[0] == '\'') ? substr($m, 1, -1) : $m)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 773 | 891 |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 774 | 891 |  |                 break; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 775 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 776 | 909 |  |         if ($w == 0) { // Parse errs, deal with space, " & ' | 
            
                                                                                                            
                            
            
                                    
            
            
                | 777 | 173 |  |             $a = preg_replace('`^(?:"[^"]*("|$)|\'[^\']*(\'|$)|\S)*\s*`', '', $a); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 778 | 173 |  |             $mode = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 779 | 173 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 780 | 909 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 781 | 946 |  |     if ($mode == 1) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 782 | 1 |  |         $aA[$nm] = ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 783 | 1 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 784 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 785 |  |  | // clean attrs | 
            
                                                                                                            
                            
            
                                    
            
            
                | 786 | 946 |  |     global $S; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 787 | 946 |  |     $rl = isset($S[$e]) ? $S[$e] : array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 788 | 946 |  |     $a = array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 789 | 946 |  |     $nfr = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 790 | 946 |  |     $d = $C['deny_attribute']; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 791 | 946 |  |     foreach ($aA as $k => $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 792 | 891 |  |         if (((isset($d['*']) ? isset($d[$k]) : !isset($d[$k])) && (isset($aN[$k][$e]) or isset($aNU[$k]) or (isset($aNO[$k]) && !isset($d['on*'])) or (isset($aNA[$k]) && !isset($d['aria*'])) or (!isset($d['data*']) && preg_match('`data-((?!xml)[^:]+$)`', $k))) && !isset($rl['n'][$k]) && !isset($rl['n']['*'])) or isset($rl[$k])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 793 | 699 |  |             if (isset($aNE[$k])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 794 | 3 |  |                 $v = $k; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 795 | 699 |  |             } elseif (!empty($lcase) && (($e != 'button' or $e != 'input') or $k == 'type')) { // Rather loose but ?not cause issues | 
            
                                                                                                            
                            
            
                                    
            
            
                | 796 | 574 |  |                 $v = (isset($aNL[($v2 = strtolower($v))])) ? $v2 : $v; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 797 | 574 |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 798 | 699 |  |             if ($k == 'style' && !$C['style_pass']) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 799 | 40 |  |                 if (false !== strpos($v, '&#')) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 800 | 3 |  |                     static $sC = array(' ' => ' ', ' ' => ' ', 'E' => 'e', 'E' => 'e', 'e' => 'e', 'e' => 'e', 'X' => 'x', 'X' => 'x', 'x' => 'x', 'x' => 'x', 'P' => 'p', 'P' => 'p', 'p' => 'p', 'p' => 'p', 'S' => 's', 'S' => 's', 's' => 's', 's' => 's', 'I' => 'i', 'I' => 'i', 'i' => 'i', 'i' => 'i', 'O' => 'o', 'O' => 'o', 'o' => 'o', 'o' => 'o', 'N' => 'n', 'N' => 'n', 'n' => 'n', 'n' => 'n', 'U' => 'u', 'U' => 'u', 'u' => 'u', 'u' => 'u', 'R' => 'r', 'R' => 'r', 'r' => 'r', 'r' => 'r', 'L' => 'l', 'L' => 'l', 'l' => 'l', 'l' => 'l', '(' => '(', '(' => '(', ')' => ')', ')' => ')', ' ' => ':', ' ' => ':', '"' => '"', '"' => '"', ''' => "'", ''' => "'", '/' => '/', '/' => '/', '*' => '*', '*' => '*', '\' => '\\', '\' => '\\'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 801 | 3 |  |                     $v = strtr($v, $sC); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 802 | 3 |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 803 | 40 |  |                 $v = preg_replace_callback('`(url(?:\()(?: )*(?:\'|"|&(?:quot|apos);)?)(.+?)((?:\'|"|&(?:quot|apos);)?(?: )*(?:\)))`iS', 'hl_prot', $v); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 804 | 40 |  |                 $v = !$C['css_expression'] ? preg_replace('`expression`i', ' ', preg_replace('`\\\\\S|(/|(%2f))(\*|(%2a))`i', ' ', $v)) : $v; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 805 | 699 |  |             } elseif (isset($aNP[$k]) or isset($aNO[$k])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 806 | 550 |  |                 $v = str_replace("", ' ', (strpos($v, '&') !== false ? str_replace(array('­', '­', '­'), ' ', $v) : $v)); # double-quoted char: soft-hyphen; appears here as "" or hyphen or something else depending on viewing software | 
            
                                                                                                            
                            
            
                                    
            
            
                | 807 | 550 |  |                 if ($k == 'srcset') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 808 |  |  |                     $v2 = ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 809 |  |  |                     foreach (explode(',', $v) as $k1 => $v1) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 810 |  |  |                         $v1 = explode(' ', ltrim($v1), 2); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 811 |  |  |                         $k1 = isset($v1[1]) ? trim($v1[1]) : ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 812 |  |  |                         $v1 = trim($v1[0]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 813 |  |  |                         if (isset($v1[0])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 814 |  |  |                             $v2 .= hl_prot($v1, $k).(empty($k1) ? '' : ' '.$k1).', '; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 815 |  |  |                         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 816 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 817 |  |  |                     $v = trim($v2, ', '); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 818 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 819 | 550 |  |                 if ($k == 'itemtype') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 820 |  |  |                     $v2 = ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 821 |  |  |                     foreach (explode(' ', $v) as $v1) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 822 |  |  |                         if (isset($v1[0])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 823 |  |  |                             $v2 .= hl_prot($v1, $k).' '; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 824 |  |  |                         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 825 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 826 |  |  |                     $v = trim($v2, ' '); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 827 |  |  |                 } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 828 | 550 |  |                 $v = hl_prot($v, $k); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 829 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 830 | 550 |  |                 if ($k == 'href') { // X-spam | 
            
                                                                                                            
                            
            
                                    
            
            
                | 831 | 161 |  |                     if ($C['anti_mail_spam'] && strpos($v, 'mailto:') === 0) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 832 |  |  |                         $v = str_replace('@', htmlspecialchars($C['anti_mail_spam']), $v); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 833 | 161 |  |                     } elseif ($C['anti_link_spam']) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 834 | 101 |  |                         $r1 = $C['anti_link_spam'][1]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 835 | 101 |  |                         if (!empty($r1) && preg_match($r1, $v)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 836 |  |  |                             continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 837 |  |  |                         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 838 | 101 |  |                         $r0 = $C['anti_link_spam'][0]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 839 | 101 |  |                         if (!empty($r0) && preg_match($r0, $v)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 840 | 101 |  |                             if (isset($a['rel'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 841 | 42 |  |                                 if (!preg_match('`\bnofollow\b`i', $a['rel'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 842 | 13 |  |                                     $a['rel'] .= ' nofollow'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 843 | 13 |  |                                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 844 | 101 |  |                             } elseif (isset($aA['rel'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 845 | 1 |  |                                 if (!preg_match('`\bnofollow\b`i', $aA['rel'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 846 |  |  |                                     $nfr = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 847 |  |  |                                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 848 | 1 |  |                             } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 849 | 88 |  |                                 $a['rel'] = 'nofollow'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 850 |  |  |                             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 851 | 101 |  |                         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 852 | 101 |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 853 | 161 |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 854 | 550 |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 855 | 699 |  |             if (isset($rl[$k]) && is_array($rl[$k]) && ($v = hl_attrval($k, $v, $rl[$k])) === 0) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 856 |  |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 857 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 858 | 699 |  |             $a[$k] = str_replace('"', '"', $v); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 859 | 699 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 860 | 946 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 861 | 946 |  |     if ($nfr) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 862 |  |  |         $a['rel'] = isset($a['rel']) ? $a['rel'].' nofollow' : 'nofollow'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 863 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 864 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 865 |  |  | // rqd attr | 
            
                                                                                                            
                            
            
                                    
            
            
                | 866 | 946 |  |     static $eAR = array('area' => array('alt' => 'area'), 'bdo' => array('dir' => 'ltr'), 'command' => array('label' => ''), 'form' => array('action' => ''), 'img' => array('src' => '', 'alt' => 'image'), 'map' => array('name' => ''), 'optgroup' => array('label' => ''), 'param' => array('name' => ''), 'style' => array('scoped' => ''), 'textarea' => array('rows' => '10', 'cols' => '50')); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 867 | 946 |  |     if (isset($eAR[$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 868 | 497 |  |         foreach ($eAR[$e] as $k => $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 869 | 497 |  |             if (!isset($a[$k])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 870 | 488 |  |                 $a[$k] = isset($v[0]) ? $v : $k; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 871 | 488 |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 872 | 497 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 873 | 497 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 874 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 875 |  |  | // depr attr | 
            
                                                                                                            
                            
            
                                    
            
            
                | 876 | 946 |  |     if ($depTr) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 877 | 790 |  |         $c = array(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 878 | 790 |  |         foreach ($a as $k => $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 879 | 650 |  |             if ($k == 'style' or !isset($aND[$k][$e])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 880 | 649 |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 881 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 882 | 4 |  |             $v = str_replace(array('\\', ':', ';', '&#'), '', $v); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 883 | 4 |  |             if ($k == 'align') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 884 | 1 |  |                 unset($a['align']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 885 | 1 |  |                 if ($e == 'img' && ($v == 'left' or $v == 'right')) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 886 |  |  |                     $c[] = 'float: '.$v; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 887 | 1 |  |                 } elseif (($e == 'div' or $e == 'table') && $v == 'center') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 888 |  |  |                     $c[] = 'margin: auto'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 889 |  |  |                 } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 890 | 1 |  |                     $c[] = 'text-align: '.$v; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 891 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 892 | 4 |  |             } elseif ($k == 'bgcolor') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 893 |  |  |                 unset($a['bgcolor']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 894 |  |  |                 $c[] = 'background-color: '.$v; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 895 | 3 |  |             } elseif ($k == 'border') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 896 |  |  |                 unset($a['border']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 897 |  |  |                 $c[] = "border: {$v}px"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 898 | 3 |  |             } elseif ($k == 'bordercolor') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 899 |  |  |                 unset($a['bordercolor']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 900 |  |  |                 $c[] = 'border-color: '.$v; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 901 | 3 |  |             } elseif ($k == 'cellspacing') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 902 |  |  |                 unset($a['cellspacing']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 903 |  |  |                 $c[] = "border-spacing: {$v}px"; | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 904 | 3 | View Code Duplication |             } elseif ($k == 'clear') { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 905 |  |  |                 unset($a['clear']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 906 |  |  |                 $c[] = 'clear: '.($v != 'all' ? $v : 'both'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 907 | 3 |  |             } elseif ($k == 'compact') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 908 |  |  |                 unset($a['compact']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 909 |  |  |                 $c[] = 'font-size: 85%'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 910 | 3 |  |             } elseif ($k == 'height' or $k == 'width') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 911 |  |  |                 unset($a[$k]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 912 |  |  |                 $c[] = $k.': '.($v[0] != '*' ? $v.(ctype_digit($v) ? 'px' : '') : 'auto'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 913 | 3 |  |             } elseif ($k == 'hspace') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 914 |  |  |                 unset($a['hspace']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 915 |  |  |                 $c[] = "margin-left: {$v}px; margin-right: {$v}px"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 916 | 3 |  |             } elseif ($k == 'language' && !isset($a['type'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 917 |  |  |                 unset($a['language']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 918 |  |  |                 $a['type'] = 'text/'.strtolower($v); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 919 | 3 |  |             } elseif ($k == 'name') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 920 | 3 |  |                 if ($C['no_deprecated_attr'] == 2 or ($e != 'a' && $e != 'map')) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 921 |  |  |                     unset($a['name']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 922 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 923 | 3 |  |                 if (!isset($a['id']) && !preg_match('`\W`', $v)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 924 |  |  |                     $a['id'] = $v; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 925 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 926 | 3 |  |             } elseif ($k == 'noshade') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 927 |  |  |                 unset($a['noshade']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 928 |  |  |                 $c[] = 'border-style: none; border: 0; background-color: gray; color: gray'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 929 |  |  |             } elseif ($k == 'nowrap') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 930 |  |  |                 unset($a['nowrap']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 931 |  |  |                 $c[] = 'white-space: nowrap'; | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 932 |  | View Code Duplication |             } elseif ($k == 'size') { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 933 |  |  |                 unset($a['size']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 934 |  |  |                 $c[] = 'size: '.$v.'px'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 935 |  |  |             } elseif ($k == 'vspace') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 936 |  |  |                 unset($a['vspace']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 937 |  |  |                 $c[] = "margin-top: {$v}px; margin-bottom: {$v}px"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 938 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 939 | 790 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 940 | 790 |  |         if (count($c)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 941 | 1 |  |             $c = implode('; ', $c); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 942 | 1 |  |             $a['style'] = isset($a['style']) ? rtrim($a['style'], ' ;').'; '.$c.';' : $c.';'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 943 | 1 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 944 | 790 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 945 |  |  | // unique ID | 
            
                                                                                                            
                            
            
                                    
            
            
                | 946 | 946 |  |     if ($C['unique_ids'] && isset($a['id'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 947 |  |  |         if (preg_match('`\s`', ($id = $a['id'])) or (isset($GLOBALS['hl_Ids'][$id]) && $C['unique_ids'] == 1)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 948 |  |  |             unset($a['id']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 949 |  |  |         } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 950 |  |  |             while (isset($GLOBALS['hl_Ids'][$id])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 951 |  |  |                 $id = $C['unique_ids'].$id; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 952 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 953 |  |  |             $GLOBALS['hl_Ids'][($a['id'] = $id)] = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 954 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 955 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 956 |  |  | // xml:lang | 
            
                                                                                                            
                            
            
                                    
            
            
                | 957 | 946 |  |     if ($C['xml:lang'] && isset($a['lang'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 958 |  |  |         $a['xml:lang'] = isset($a['xml:lang']) ? $a['xml:lang'] : $a['lang']; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 959 |  |  |         if ($C['xml:lang'] == 2) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 960 |  |  |             unset($a['lang']); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 961 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 962 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 963 |  |  | // for transformed tag | 
            
                                                                                                            
                            
            
                                    
            
            
                | 964 | 946 |  |     if (!empty($trt)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 965 | 1 |  |         $a['style'] = isset($a['style']) ? rtrim($a['style'], ' ;').'; '.$trt : $trt; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 966 | 1 |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 967 |  |  | // return with empty ele / | 
            
                                                                                                            
                            
            
                                    
            
            
                | 968 | 946 |  |     if (empty($C['hook_tag'])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 969 | 946 |  |         $aA = ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 970 | 946 |  |         foreach ($a as $k => $v) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 971 | 772 |  |             $aA .= " {$k}=\"{$v}\""; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 972 | 946 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 973 | 946 |  |         return "<{$e}{$aA}".(isset($eE[$e]) ? ' /' : '').'>'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 974 |  |  |     } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 975 |  |  |         return $C['hook_tag']($e, $a); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 976 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 977 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 978 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 979 |  |  | function hl_tag2(&$e, &$a, $t = 1) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 980 |  |  | // transform tag | 
            
                                                                                                            
                            
            
                                    
            
            
                | 981 | 1 |  |     if ($e == 'big') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 982 |  |  |         $e = 'span'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 983 |  |  |         return 'font-size: larger;'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 984 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 985 | 1 |  |     if ($e == 's' or $e == 'strike') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 986 |  |  |         $e = 'span'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 987 |  |  |         return 'text-decoration: line-through;'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 988 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 989 | 1 |  |     if ($e == 'tt') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 990 |  |  |         $e = 'code'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 991 |  |  |         return ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 992 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 993 | 1 |  |     if ($e == 'center') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 994 |  |  |         $e = 'div'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 995 |  |  |         return 'text-align: center;'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 996 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 997 | 1 |  |     static $fs = array('0' => 'xx-small', '1' => 'xx-small', '2' => 'small', '3' => 'medium', '4' => 'large', '5' => 'x-large', '6' => 'xx-large', '7' => '300%', '-1' => 'smaller', '-2' => '60%', '+1' => 'larger', '+2' => '150%', '+3' => '200%', '+4' => '300%'); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 998 | 1 |  |     if ($e == 'font') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 999 | 1 |  |         $a2 = ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1000 | 1 |  |         while (preg_match('`(^|\s)(color|size)\s*=\s*(\'|")?(.+?)(\\3|\s|$)`i', $a, $m)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1001 | 1 |  |             $a = str_replace($m[0], ' ', $a); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1002 | 1 |  |             $a2 .= strtolower($m[2]) == 'color' ? (' color: '.str_replace('"', '\'', trim($m[4])).';') : (isset($fs[($m = trim($m[4]))]) ? ($a2 .= ' font-size: '.str_replace('"', '\'', $fs[$m]).';') : ''); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1003 | 1 |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1004 | 1 |  |         while (preg_match('`(^|\s)face\s*=\s*(\'|")?([^=]+?)\\2`i', $a, $m) or preg_match('`(^|\s)face\s*=(\s*)(\S+)`i', $a, $m)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1005 |  |  |             $a = str_replace($m[0], ' ', $a); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1006 |  |  |             $a2 .= ' font-family: '.str_replace('"', '\'', trim($m[3])).';'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1007 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1008 | 1 |  |         $e = 'span'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1009 | 1 |  |         return ltrim(str_replace('<', '', $a2)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1010 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1011 |  |  |     if ($e == 'acronym') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1012 |  |  |         $e = 'abbr'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1013 |  |  |         return ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1014 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1015 |  |  |     if ($e == 'dir') { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1016 |  |  |         $e = 'ul'; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1017 |  |  |         return ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1018 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1019 |  |  |     if ($t == 2) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1020 |  |  |         $e = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1021 |  |  |         return 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1022 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1023 |  |  |     return ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1024 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1025 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1026 |  |  | function hl_tidy($t, $w, $p) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1027 |  |  | // tidy/compact HTM | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1028 |  |  |     if (strpos(' pre,script,textarea', "$p,")) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1029 |  |  |         return $t; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1030 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1031 |  |  |     if (!function_exists('hl_aux2')) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1032 |  |  |         function hl_aux2($m) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1033 |  |  |             return $m[1].str_replace(array("<", ">", "\n", "\r", "\t", ' '), array("\x01", "\x02", "\x03", "\x04", "\x05", "\x07"), $m[3]).$m[4]; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1034 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1035 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1036 |  |  |     $t = preg_replace(array('`(<\w[^>]*(?<!/)>)\s+`', '`\s+`', '`(<\w[^>]*(?<!/)>) `'), array(' $1', ' ', '$1'), preg_replace_callback(array('`(<(!\[CDATA\[))(.+?)(\]\]>)`sm', '`(<(!--))(.+?)(-->)`sm', '`(<(pre|script|textarea)[^>]*?>)(.+?)(</\2>)`sm'), 'hl_aux2', $t)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1037 |  |  |     if (($w = strtolower($w)) == -1) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1038 |  |  |         return str_replace(array("\x01", "\x02", "\x03", "\x04", "\x05", "\x07"), array('<', '>', "\n", "\r", "\t", ' '), $t); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1039 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1040 |  |  |     $s = strpos(" $w", 't') ? "\t" : ' '; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1041 |  |  |     $s = preg_match('`\d`', $w, $m) ? str_repeat($s, $m[0]) : str_repeat($s, ($s == "\t" ? 1 : 2)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1042 |  |  |     $N = preg_match('`[ts]([1-9])`', $w, $m) ? $m[1] : 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1043 |  |  |     $a = array('br' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1044 |  |  |     $b = array('button' => 1, 'command' => 1, 'input' => 1, 'option' => 1, 'param' => 1, 'track' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1045 |  |  |     $c = array('audio' => 1, 'canvas' => 1, 'caption' => 1, 'dd' => 1, 'dt' => 1, 'figcaption' => 1, 'h1' => 1, 'h2' => 1, 'h3' => 1, 'h4' => 1, 'h5' => 1, 'h6' => 1, 'isindex' => 1, 'label' => 1, 'legend' => 1, 'li' => 1, 'object' => 1, 'p' => 1, 'pre' => 1, 'style' => 1, 'summary' => 1, 'td' => 1, 'textarea' => 1, 'th' => 1, 'video' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1046 |  |  |     $d = array('address' => 1, 'article' => 1, 'aside' => 1, 'blockquote' => 1, 'center' => 1, 'colgroup' => 1, 'datalist' => 1, 'details' => 1, 'dir' => 1, 'div' => 1, 'dl' => 1, 'fieldset' => 1, 'figure' => 1, 'footer' => 1, 'form' => 1, 'header' => 1, 'hgroup' => 1, 'hr' => 1, 'iframe' => 1, 'main' => 1, 'map' => 1, 'menu' => 1, 'nav' => 1, 'noscript' => 1, 'ol' => 1, 'optgroup' => 1, 'rbc' => 1, 'rtc' => 1, 'ruby' => 1, 'script' => 1, 'section' => 1, 'select' => 1, 'table' => 1, 'tbody' => 1, 'tfoot' => 1, 'thead' => 1, 'tr' => 1, 'ul' => 1); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1047 |  |  |     $T = explode('<', $t); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1048 |  |  |     $X = 1; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1049 |  |  |     while ($X) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1050 |  |  |         $n = $N; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1051 |  |  |         $t = $T; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1052 |  |  |         ob_start(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1053 |  |  |         if (isset($d[$p])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1054 |  |  |             echo str_repeat($s, ++$n); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1055 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1056 |  |  |         echo ltrim(array_shift($t)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1057 |  |  |         for ($i = -1, $j = count($t); ++$i < $j;) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1058 |  |  |             $r = ''; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1059 |  |  |             list($e, $r) = explode('>', $t[$i]); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1060 |  |  |             $x = $e[0] == '/' ? 0 : (substr($e, -1) == '/' ? 1 : ($e[0] != '!' ? 2 : -1)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1061 |  |  |             $y = !$x ? ltrim($e, '/') : ($x > 0 ? substr($e, 0, strcspn($e, ' ')) : 0); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1062 |  |  |             $e = "<$e>"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1063 |  |  |             if (isset($d[$y])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1064 |  |  |                 if (!$x) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1065 |  |  |                     if ($n) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1066 |  |  |                         echo "\n", str_repeat($s, --$n), "$e\n", str_repeat($s, $n); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1067 |  |  |                     } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1068 |  |  |                         ++$N; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1069 |  |  |                         ob_end_clean(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1070 |  |  |                         continue 2; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1071 |  |  |                     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1072 |  |  |                 } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1073 |  |  |                     echo "\n", str_repeat($s, $n), "$e\n", str_repeat($s, ($x != 1 ? ++$n : $n)); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1074 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1075 |  |  |                 echo $r; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1076 |  |  |                 continue; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1077 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1078 |  |  |             $f = "\n".str_repeat($s, $n); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1079 |  |  |             if (isset($c[$y])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1080 |  |  |                 if (!$x) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1081 |  |  |                     echo $e, $f, $r; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1082 |  |  |                 } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1083 |  |  |                     echo $f, $e, $r; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1084 |  |  |                 } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1085 |  |  |             } elseif (isset($b[$y])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1086 |  |  |                 echo $f, $e, $r; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1087 |  |  |             } elseif (isset($a[$y])) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1088 |  |  |                 echo $e, $f, $r; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1089 |  |  |             } elseif (!$y) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1090 |  |  |                 echo $f, $e, $f, $r; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1091 |  |  |             } else { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1092 |  |  |                 echo $e, $r; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1093 |  |  |             } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1094 |  |  |         } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1095 |  |  |         $X = 0; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1096 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1097 |  |  |     $t = str_replace(array("\n ", " \n"), "\n", preg_replace('`[\n]\s*?[\n]+`', "\n", ob_get_contents())); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1098 |  |  |     ob_end_clean(); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1099 |  |  |     if (($l = strpos(" $w", 'r') ? (strpos(" $w", 'n') ? "\r\n" : "\r") : 0)) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1100 |  |  |         $t = str_replace("\n", $l, $t); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1101 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1102 |  |  |     return str_replace(array("\x01", "\x02", "\x03", "\x04", "\x05", "\x07"), array('<', '>', "\n", "\r", "\t", ' '), $t); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1103 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1104 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1105 |  |  | function hl_version() { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1106 |  |  | // version | 
            
                                                                                                            
                            
            
                                    
            
            
                | 1107 |  |  |     return '1.2.4.1'; | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 1108 |  |  | } | 
            
                                                        
            
                                    
            
            
                | 1109 |  |  |  | 
            
                        
There are different options of fixing this problem.
If you want to be on the safe side, you can add an additional type-check:
If you are sure that the expression is traversable, you might want to add a doc comment cast to improve IDE auto-completion and static analysis:
Mark the issue as a false-positive: Just hover the remove button, in the top-right corner of this issue for more options.