Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
O
osticket
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
docker
osticket
Commits
25a3f7b5
Commit
25a3f7b5
authored
9 years ago
by
Peter Rotich
Browse files
Options
Downloads
Patches
Plain Diff
Upgrade htmLawed to version 1.1.20
parent
e3c9e0f0
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
include/htmLawed.php
+13
-13
13 additions, 13 deletions
include/htmLawed.php
with
13 additions
and
13 deletions
include/htmLawed.php
+
13
−
13
View file @
25a3f7b5
<?php
/*
htmLawed 1.1.
16
,
2
9
August
201
3
htmLawed 1.1.
20
, 9
June
201
5
Copyright Santosh Patnaik
Dual licensed with LGPL 3 and GPL 2+
A PHP Labware internal utility; www.bioinformatics.org/phplabware/internal_utilities/htmLawed
...
...
@@ -68,7 +68,7 @@ $C['css_expression'] = empty($C['css_expression']) ? 0 : 1;
$C
[
'direct_list_nest'
]
=
empty
(
$C
[
'direct_list_nest'
])
?
0
:
1
;
$C
[
'hexdec_entity'
]
=
isset
(
$C
[
'hexdec_entity'
])
?
$C
[
'hexdec_entity'
]
:
1
;
$C
[
'hook'
]
=
(
!
empty
(
$C
[
'hook'
])
&&
function_exists
(
$C
[
'hook'
]))
?
$C
[
'hook'
]
:
0
;
$C
[
'hook_tag'
]
=
(
!
empty
(
$C
[
'hook_tag'
])
&&
is_callable
(
$C
[
'hook_tag'
]))
?
$C
[
'hook_tag'
]
:
0
;
$C
[
'hook_tag'
]
=
(
!
empty
(
$C
[
'hook_tag'
])
&&
function_exists
(
$C
[
'hook_tag'
]))
?
$C
[
'hook_tag'
]
:
0
;
$C
[
'keep_bad'
]
=
isset
(
$C
[
'keep_bad'
])
?
$C
[
'keep_bad'
]
:
6
;
$C
[
'lc_std_val'
]
=
isset
(
$C
[
'lc_std_val'
])
?
(
bool
)
$C
[
'lc_std_val'
]
:
1
;
$C
[
'make_tag_strict'
]
=
isset
(
$C
[
'make_tag_strict'
])
?
$C
[
'make_tag_strict'
]
:
1
;
...
...
@@ -212,7 +212,7 @@ for($i=-1, $ci=count($t); ++$i<$ci;){
if
(
isset
(
$cE
[
$e
])
or
!
in_array
(
$e
,
$q
)){
continue
;}
// Empty/unopen
if
(
$p
==
$e
){
array_pop
(
$q
);
echo
'</'
,
$e
,
'>'
;
unset
(
$e
);
continue
;}
// Last open
$add
=
''
;
// Nesting - close open tags that need to be
for
(
$j
=-
1
,
$cj
=
count
(
$q
);
++
$j
<
$cj
;){
for
(
$j
=-
1
,
$cj
=
count
(
$q
);
++
$j
<
$cj
;){
if
((
$d
=
array_pop
(
$q
))
==
$e
){
break
;}
else
{
$add
.
=
"</
{
$d
}
>"
;}
}
...
...
@@ -379,7 +379,7 @@ return $r;
function
hl_spec
(
$t
){
// final $spec
$s
=
array
();
$t
=
str_replace
(
array
(
"
\t
"
,
"
\r
"
,
"
\n
"
,
' '
),
''
,
preg_replace
(
'/"(?>(`.|[^"])*)"/sm
e'
,
'
substr(str_replace(array(";", "|", "~", " ", ",", "/", "(", ")", \'`"\'), array("\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\""),
"$0"
), 1, -1)
'
,
trim
(
$t
)));
$t
=
str_replace
(
array
(
"
\t
"
,
"
\r
"
,
"
\n
"
,
' '
),
''
,
preg_replace
_callback
(
'/"(?>(`.|[^"])*)"/sm
'
,
create_function
(
'$m'
,
'return
substr(str_replace(array(";", "|", "~", " ", ",", "/", "(", ")", \'`"\'), array("\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\""),
$m[0]
), 1, -1)
;'
)
,
trim
(
$t
)));
for
(
$i
=
count
((
$t
=
explode
(
';'
,
$t
)));
--
$i
>=
0
;){
$w
=
$t
[
$i
];
if
(
empty
(
$w
)
or
(
$e
=
strpos
(
$w
,
'='
))
===
false
or
!
strlen
((
$a
=
substr
(
$w
,
$e
+
1
)))){
continue
;}
...
...
@@ -434,8 +434,8 @@ if(!empty($m[1])){
}
// open tag & attr
static
$aN
=
array
(
'abbr'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'accept-charset'
=>
array
(
'form'
=>
1
),
'accept'
=>
array
(
'form'
=>
1
,
'input'
=>
1
),
'accesskey'
=>
array
(
'a'
=>
1
,
'area'
=>
1
,
'button'
=>
1
,
'input'
=>
1
,
'label'
=>
1
,
'legend'
=>
1
,
'textarea'
=>
1
),
'action'
=>
array
(
'form'
=>
1
),
'align'
=>
array
(
'caption'
=>
1
,
'embed'
=>
1
,
'applet'
=>
1
,
'iframe'
=>
1
,
'img'
=>
1
,
'input'
=>
1
,
'object'
=>
1
,
'legend'
=>
1
,
'table'
=>
1
,
'hr'
=>
1
,
'div'
=>
1
,
'h1'
=>
1
,
'h2'
=>
1
,
'h3'
=>
1
,
'h4'
=>
1
,
'h5'
=>
1
,
'h6'
=>
1
,
'p'
=>
1
,
'col'
=>
1
,
'colgroup'
=>
1
,
'tbody'
=>
1
,
'td'
=>
1
,
'tfoot'
=>
1
,
'th'
=>
1
,
'thead'
=>
1
,
'tr'
=>
1
),
'alt'
=>
array
(
'applet'
=>
1
,
'area'
=>
1
,
'img'
=>
1
,
'input'
=>
1
),
'archive'
=>
array
(
'applet'
=>
1
,
'object'
=>
1
),
'axis'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'bgcolor'
=>
array
(
'embed'
=>
1
,
'table'
=>
1
,
'tr'
=>
1
,
'td'
=>
1
,
'th'
=>
1
),
'border'
=>
array
(
'table'
=>
1
,
'img'
=>
1
,
'object'
=>
1
),
'bordercolor'
=>
array
(
'table'
=>
1
,
'td'
=>
1
,
'tr'
=>
1
),
'cellpadding'
=>
array
(
'table'
=>
1
),
'cellspacing'
=>
array
(
'table'
=>
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
(
'input'
=>
1
),
'cite'
=>
array
(
'blockquote'
=>
1
,
'q'
=>
1
,
'del'
=>
1
,
'ins'
=>
1
),
'classid'
=>
array
(
'object'
=>
1
),
'clear'
=>
array
(
'br'
=>
1
),
'code'
=>
array
(
'applet'
=>
1
),
'codebase'
=>
array
(
'object'
=>
1
,
'applet'
=>
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
),
'coords'
=>
array
(
'area'
=>
1
,
'a'
=>
1
),
'data'
=>
array
(
'object'
=>
1
),
'datetime'
=>
array
(
'del'
=>
1
,
'ins'
=>
1
),
'declare'
=>
array
(
'object'
=>
1
),
'defer'
=>
array
(
'script'
=>
1
),
'dir'
=>
array
(
'bdo'
=>
1
),
'disabled'
=>
array
(
'button'
=>
1
,
'input'
=>
1
,
'optgroup'
=>
1
,
'option'
=>
1
,
'select'
=>
1
,
'textarea'
=>
1
),
'enctype'
=>
array
(
'form'
=>
1
),
'face'
=>
array
(
'font'
=>
1
),
'flashvars'
=>
array
(
'embed'
=>
1
),
'for'
=>
array
(
'label'
=>
1
),
'frame'
=>
array
(
'table'
=>
1
),
'frameborder'
=>
array
(
'iframe'
=>
1
),
'headers'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'height'
=>
array
(
'embed'
=>
1
,
'iframe'
=>
1
,
'td'
=>
1
,
'th'
=>
1
,
'img'
=>
1
,
'object'
=>
1
,
'applet'
=>
1
),
'href'
=>
array
(
'a'
=>
1
,
'area'
=>
1
),
'hreflang'
=>
array
(
'a'
=>
1
),
'hspace'
=>
array
(
'applet'
=>
1
,
'img'
=>
1
,
'object'
=>
1
),
'ismap'
=>
array
(
'img'
=>
1
,
'input'
=>
1
),
'label'
=>
array
(
'option'
=>
1
,
'optgroup'
=>
1
),
'language'
=>
array
(
'script'
=>
1
),
'longdesc'
=>
array
(
'img'
=>
1
,
'iframe'
=>
1
),
'marginheight'
=>
array
(
'iframe'
=>
1
),
'marginwidth'
=>
array
(
'iframe'
=>
1
),
'maxlength'
=>
array
(
'input'
=>
1
),
'method'
=>
array
(
'form'
=>
1
),
'model'
=>
array
(
'embed'
=>
1
),
'multiple'
=>
array
(
'select'
=>
1
),
'name'
=>
array
(
'button'
=>
1
,
'embed'
=>
1
,
'textarea'
=>
1
,
'applet'
=>
1
,
'select'
=>
1
,
'form'
=>
1
,
'iframe'
=>
1
,
'img'
=>
1
,
'a'
=>
1
,
'input'
=>
1
,
'object'
=>
1
,
'map'
=>
1
,
'param'
=>
1
),
'nohref'
=>
array
(
'area'
=>
1
),
'noshade'
=>
array
(
'hr'
=>
1
),
'nowrap'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'object'
=>
array
(
'applet'
=>
1
),
'onblur'
=>
array
(
'a'
=>
1
,
'area'
=>
1
,
'button'
=>
1
,
'input'
=>
1
,
'label'
=>
1
,
'select'
=>
1
,
'textarea'
=>
1
),
'onchange'
=>
array
(
'input'
=>
1
,
'select'
=>
1
,
'textarea'
=>
1
),
'onfocus'
=>
array
(
'a'
=>
1
,
'area'
=>
1
,
'button'
=>
1
,
'input'
=>
1
,
'label'
=>
1
,
'select'
=>
1
,
'textarea'
=>
1
),
'onreset'
=>
array
(
'form'
=>
1
),
'onselect'
=>
array
(
'input'
=>
1
,
'textarea'
=>
1
),
'onsubmit'
=>
array
(
'form'
=>
1
),
'pluginspage'
=>
array
(
'embed'
=>
1
),
'pluginurl'
=>
array
(
'embed'
=>
1
),
'prompt'
=>
array
(
'isindex'
=>
1
),
'readonly'
=>
array
(
'textarea'
=>
1
,
'input'
=>
1
),
'rel'
=>
array
(
'a'
=>
1
),
'rev'
=>
array
(
'a'
=>
1
),
'rows'
=>
array
(
'textarea'
=>
1
),
'rowspan'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'rules'
=>
array
(
'table'
=>
1
),
'scope'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'scrolling'
=>
array
(
'iframe'
=>
1
),
'selected'
=>
array
(
'option'
=>
1
),
'shape'
=>
array
(
'area'
=>
1
,
'a'
=>
1
),
'size'
=>
array
(
'hr'
=>
1
,
'font'
=>
1
,
'input'
=>
1
,
'select'
=>
1
),
'span'
=>
array
(
'col'
=>
1
,
'colgroup'
=>
1
),
'src'
=>
array
(
'embed'
=>
1
,
'script'
=>
1
,
'input'
=>
1
,
'iframe'
=>
1
,
'img'
=>
1
),
'standby'
=>
array
(
'object'
=>
1
),
'start'
=>
array
(
'ol'
=>
1
),
'summary'
=>
array
(
'table'
=>
1
),
'tabindex'
=>
array
(
'a'
=>
1
,
'area'
=>
1
,
'button'
=>
1
,
'input'
=>
1
,
'object'
=>
1
,
'select'
=>
1
,
'textarea'
=>
1
),
'target'
=>
array
(
'a'
=>
1
,
'area'
=>
1
,
'form'
=>
1
),
'type'
=>
array
(
'a'
=>
1
,
'embed'
=>
1
,
'object'
=>
1
,
'param'
=>
1
,
'script'
=>
1
,
'input'
=>
1
,
'li'
=>
1
,
'ol'
=>
1
,
'ul'
=>
1
,
'button'
=>
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
(
'input'
=>
1
,
'option'
=>
1
,
'param'
=>
1
,
'button'
=>
1
,
'li'
=>
1
),
'valuetype'
=>
array
(
'param'
=>
1
),
'vspace'
=>
array
(
'applet'
=>
1
,
'img'
=>
1
,
'object'
=>
1
),
'width'
=>
array
(
'embed'
=>
1
,
'hr'
=>
1
,
'iframe'
=>
1
,
'img'
=>
1
,
'object'
=>
1
,
'table'
=>
1
,
'td'
=>
1
,
'th'
=>
1
,
'applet'
=>
1
,
'col'
=>
1
,
'colgroup'
=>
1
,
'pre'
=>
1
),
'wmode'
=>
array
(
'embed'
=>
1
),
'xml:space'
=>
array
(
'pre'
=>
1
,
'script'
=>
1
,
'style'
=>
1
));
// Ele-specific
static
$aNE
=
array
(
'checked'
=>
1
,
'compact'
=>
1
,
'declare'
=>
1
,
'defer'
=>
1
,
'disabled'
=>
1
,
'ismap'
=>
1
,
'multiple'
=>
1
,
'nohref'
=>
1
,
'noresize'
=>
1
,
'noshade'
=>
1
,
'nowrap'
=>
1
,
'readonly'
=>
1
,
'selected'
=>
1
);
// Empty
static
$aN
=
array
(
'abbr'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'accept-charset'
=>
array
(
'form'
=>
1
),
'accept'
=>
array
(
'form'
=>
1
,
'input'
=>
1
),
'accesskey'
=>
array
(
'a'
=>
1
,
'area'
=>
1
,
'button'
=>
1
,
'input'
=>
1
,
'label'
=>
1
,
'legend'
=>
1
,
'textarea'
=>
1
),
'action'
=>
array
(
'form'
=>
1
),
'align'
=>
array
(
'caption'
=>
1
,
'embed'
=>
1
,
'applet'
=>
1
,
'iframe'
=>
1
,
'img'
=>
1
,
'input'
=>
1
,
'object'
=>
1
,
'legend'
=>
1
,
'table'
=>
1
,
'hr'
=>
1
,
'div'
=>
1
,
'h1'
=>
1
,
'h2'
=>
1
,
'h3'
=>
1
,
'h4'
=>
1
,
'h5'
=>
1
,
'h6'
=>
1
,
'p'
=>
1
,
'col'
=>
1
,
'colgroup'
=>
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
),
'axis'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'bgcolor'
=>
array
(
'embed'
=>
1
,
'table'
=>
1
,
'tr'
=>
1
,
'td'
=>
1
,
'th'
=>
1
),
'border'
=>
array
(
'table'
=>
1
,
'img'
=>
1
,
'object'
=>
1
),
'bordercolor'
=>
array
(
'table'
=>
1
,
'td'
=>
1
,
'tr'
=>
1
),
'cellpadding'
=>
array
(
'table'
=>
1
),
'cellspacing'
=>
array
(
'table'
=>
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
(
'input'
=>
1
),
'cite'
=>
array
(
'blockquote'
=>
1
,
'q'
=>
1
,
'del'
=>
1
,
'ins'
=>
1
),
'classid'
=>
array
(
'object'
=>
1
),
'clear'
=>
array
(
'br'
=>
1
),
'code'
=>
array
(
'applet'
=>
1
),
'codebase'
=>
array
(
'object'
=>
1
,
'applet'
=>
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
),
'coords'
=>
array
(
'area'
=>
1
,
'a'
=>
1
),
'data'
=>
array
(
'object'
=>
1
),
'datetime'
=>
array
(
'del'
=>
1
,
'ins'
=>
1
),
'declare'
=>
array
(
'object'
=>
1
),
'defer'
=>
array
(
'script'
=>
1
),
'dir'
=>
array
(
'bdo'
=>
1
),
'disabled'
=>
array
(
'button'
=>
1
,
'input'
=>
1
,
'optgroup'
=>
1
,
'option'
=>
1
,
'select'
=>
1
,
'textarea'
=>
1
),
'enctype'
=>
array
(
'form'
=>
1
),
'face'
=>
array
(
'font'
=>
1
),
'flashvars'
=>
array
(
'embed'
=>
1
),
'for'
=>
array
(
'label'
=>
1
),
'frame'
=>
array
(
'table'
=>
1
),
'frameborder'
=>
array
(
'iframe'
=>
1
),
'headers'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'height'
=>
array
(
'embed'
=>
1
,
'iframe'
=>
1
,
'td'
=>
1
,
'th'
=>
1
,
'img'
=>
1
,
'object'
=>
1
,
'applet'
=>
1
),
'href'
=>
array
(
'a'
=>
1
,
'area'
=>
1
),
'hreflang'
=>
array
(
'a'
=>
1
),
'hspace'
=>
array
(
'applet'
=>
1
,
'img'
=>
1
,
'object'
=>
1
),
'ismap'
=>
array
(
'img'
=>
1
,
'input'
=>
1
),
'label'
=>
array
(
'option'
=>
1
,
'optgroup'
=>
1
),
'language'
=>
array
(
'script'
=>
1
),
'longdesc'
=>
array
(
'img'
=>
1
,
'iframe'
=>
1
),
'marginheight'
=>
array
(
'iframe'
=>
1
),
'marginwidth'
=>
array
(
'iframe'
=>
1
),
'maxlength'
=>
array
(
'input'
=>
1
),
'method'
=>
array
(
'form'
=>
1
),
'model'
=>
array
(
'embed'
=>
1
),
'multiple'
=>
array
(
'select'
=>
1
),
'name'
=>
array
(
'button'
=>
1
,
'embed'
=>
1
,
'textarea'
=>
1
,
'applet'
=>
1
,
'select'
=>
1
,
'form'
=>
1
,
'iframe'
=>
1
,
'img'
=>
1
,
'a'
=>
1
,
'input'
=>
1
,
'object'
=>
1
,
'map'
=>
1
,
'param'
=>
1
),
'nohref'
=>
array
(
'area'
=>
1
),
'noshade'
=>
array
(
'hr'
=>
1
),
'nowrap'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'object'
=>
array
(
'applet'
=>
1
),
'onblur'
=>
array
(
'a'
=>
1
,
'area'
=>
1
,
'button'
=>
1
,
'input'
=>
1
,
'label'
=>
1
,
'select'
=>
1
,
'textarea'
=>
1
),
'onchange'
=>
array
(
'input'
=>
1
,
'select'
=>
1
,
'textarea'
=>
1
),
'onfocus'
=>
array
(
'a'
=>
1
,
'area'
=>
1
,
'button'
=>
1
,
'input'
=>
1
,
'label'
=>
1
,
'select'
=>
1
,
'textarea'
=>
1
),
'onreset'
=>
array
(
'form'
=>
1
),
'onselect'
=>
array
(
'input'
=>
1
,
'textarea'
=>
1
),
'onsubmit'
=>
array
(
'form'
=>
1
),
'pluginspage'
=>
array
(
'embed'
=>
1
),
'pluginurl'
=>
array
(
'embed'
=>
1
),
'prompt'
=>
array
(
'isindex'
=>
1
),
'readonly'
=>
array
(
'textarea'
=>
1
,
'input'
=>
1
),
'rel'
=>
array
(
'a'
=>
1
),
'rev'
=>
array
(
'a'
=>
1
),
'rows'
=>
array
(
'textarea'
=>
1
),
'rowspan'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'rules'
=>
array
(
'table'
=>
1
),
'scope'
=>
array
(
'td'
=>
1
,
'th'
=>
1
),
'scrolling'
=>
array
(
'iframe'
=>
1
),
'selected'
=>
array
(
'option'
=>
1
),
'shape'
=>
array
(
'area'
=>
1
,
'a'
=>
1
),
'size'
=>
array
(
'hr'
=>
1
,
'font'
=>
1
,
'input'
=>
1
,
'select'
=>
1
),
'span'
=>
array
(
'col'
=>
1
,
'colgroup'
=>
1
),
'src'
=>
array
(
'embed'
=>
1
,
'script'
=>
1
,
'input'
=>
1
,
'iframe'
=>
1
,
'img'
=>
1
),
'standby'
=>
array
(
'object'
=>
1
),
'start'
=>
array
(
'ol'
=>
1
),
'summary'
=>
array
(
'table'
=>
1
),
'tabindex'
=>
array
(
'a'
=>
1
,
'area'
=>
1
,
'button'
=>
1
,
'input'
=>
1
,
'object'
=>
1
,
'select'
=>
1
,
'textarea'
=>
1
),
'target'
=>
array
(
'a'
=>
1
,
'area'
=>
1
,
'form'
=>
1
),
'type'
=>
array
(
'a'
=>
1
,
'embed'
=>
1
,
'object'
=>
1
,
'param'
=>
1
,
'script'
=>
1
,
'input'
=>
1
,
'li'
=>
1
,
'ol'
=>
1
,
'ul'
=>
1
,
'button'
=>
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
(
'input'
=>
1
,
'option'
=>
1
,
'param'
=>
1
,
'button'
=>
1
,
'li'
=>
1
),
'valuetype'
=>
array
(
'param'
=>
1
),
'vspace'
=>
array
(
'applet'
=>
1
,
'img'
=>
1
,
'object'
=>
1
),
'width'
=>
array
(
'embed'
=>
1
,
'hr'
=>
1
,
'iframe'
=>
1
,
'img'
=>
1
,
'object'
=>
1
,
'table'
=>
1
,
'td'
=>
1
,
'th'
=>
1
,
'applet'
=>
1
,
'col'
=>
1
,
'colgroup'
=>
1
,
'pre'
=>
1
),
'wmode'
=>
array
(
'embed'
=>
1
),
'xml:space'
=>
array
(
'pre'
=>
1
,
'script'
=>
1
,
'style'
=>
1
));
// Ele-specific
static
$aNE
=
array
(
'allowfullscreen'
=>
1
,
'checked'
=>
1
,
'compact'
=>
1
,
'declare'
=>
1
,
'defer'
=>
1
,
'disabled'
=>
1
,
'ismap'
=>
1
,
'multiple'
=>
1
,
'nohref'
=>
1
,
'noresize'
=>
1
,
'noshade'
=>
1
,
'nowrap'
=>
1
,
'readonly'
=>
1
,
'selected'
=>
1
);
// Empty
static
$aNP
=
array
(
'action'
=>
1
,
'cite'
=>
1
,
'classid'
=>
1
,
'codebase'
=>
1
,
'data'
=>
1
,
'href'
=>
1
,
'longdesc'
=>
1
,
'model'
=>
1
,
'pluginspage'
=>
1
,
'pluginurl'
=>
1
,
'usemap'
=>
1
);
// Need scheme check; excludes style, on* & src
static
$aNU
=
array
(
'class'
=>
array
(
'param'
=>
1
,
'script'
=>
1
),
'dir'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'iframe'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'id'
=>
array
(
'script'
=>
1
),
'lang'
=>
array
(
'applet'
=>
1
,
'br'
=>
1
,
'iframe'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'xml:lang'
=>
array
(
'applet'
=>
1
,
'br'
=>
1
,
'iframe'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'onclick'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'font'
=>
1
,
'iframe'
=>
1
,
'isindex'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'ondblclick'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'font'
=>
1
,
'iframe'
=>
1
,
'isindex'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'onkeydown'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'font'
=>
1
,
'iframe'
=>
1
,
'isindex'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'onkeypress'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'font'
=>
1
,
'iframe'
=>
1
,
'isindex'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'onkeyup'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'font'
=>
1
,
'iframe'
=>
1
,
'isindex'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'onmousedown'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'font'
=>
1
,
'iframe'
=>
1
,
'isindex'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'onmousemove'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'font'
=>
1
,
'iframe'
=>
1
,
'isindex'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'onmouseout'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'font'
=>
1
,
'iframe'
=>
1
,
'isindex'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'onmouseover'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'font'
=>
1
,
'iframe'
=>
1
,
'isindex'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'onmouseup'
=>
array
(
'applet'
=>
1
,
'bdo'
=>
1
,
'br'
=>
1
,
'font'
=>
1
,
'iframe'
=>
1
,
'isindex'
=>
1
,
'param'
=>
1
,
'script'
=>
1
),
'style'
=>
array
(
'param'
=>
1
,
'script'
=>
1
),
'title'
=>
array
(
'param'
=>
1
,
'script'
=>
1
));
// Univ & exceptions
...
...
@@ -475,7 +475,7 @@ while(strlen($a)){
break
;
case
2
:
// Val
if
(
preg_match
(
'`^((?:"[^"]*")|(?:\'[^\']*\')|(?:\s*[^\s"\']+))(.*)`'
,
$a
,
$m
)){
$a
=
ltrim
(
$m
[
2
]);
$m
=
$m
[
1
];
$w
=
1
;
$mode
=
0
;
$aA
[
$nm
]
=
trim
((
$m
[
0
]
==
'"'
or
$m
[
0
]
==
'\''
)
?
substr
(
$m
,
1
,
-
1
)
:
$m
);
$aA
[
$nm
]
=
trim
(
str_replace
(
'<'
,
'<'
,
(
$m
[
0
]
==
'"'
or
$m
[
0
]
==
'\''
)
?
substr
(
$m
,
1
,
-
1
)
:
$m
)
)
;
}
break
;
}
...
...
@@ -504,7 +504,7 @@ foreach($aA as $k=>$v){
$v
=
preg_replace_callback
(
'`(url(?:\()(?: )*(?:\'|"|&(?:quot|apos);)?)(.+?)((?:\'|"|&(?:quot|apos);)?(?: )*(?:\)))`iS'
,
'hl_prot'
,
$v
);
$v
=
!
$C
[
'css_expression'
]
?
preg_replace
(
'`expression`i'
,
' '
,
preg_replace
(
'`\\\\\S|(/|(%2f))(\*|(%2a))`i'
,
' '
,
$v
))
:
$v
;
}
elseif
(
isset
(
$aNP
[
$k
])
or
strpos
(
$k
,
'src'
)
!==
false
or
$k
[
0
]
==
'o'
){
$v
=
str_replace
(
"
\xad
"
,
' '
,
(
strpos
(
$v
,
'&'
)
!==
false
?
str_replace
(
array
(
'­'
,
'­'
,
'­'
),
' '
,
$v
)
:
$v
));
$v
=
str_replace
(
"
"
,
' '
,
(
strpos
(
$v
,
'&'
)
!==
false
?
str_replace
(
array
(
'­'
,
'­'
,
'­'
),
' '
,
$v
)
:
$v
));
# double-quoted char is soft-hyphen; appears here as "" or hyphen or something else depending on viewing software
$v
=
hl_prot
(
$v
,
$k
);
if
(
$k
==
'href'
){
// X-spam
if
(
$C
[
'anti_mail_spam'
]
&&
strpos
(
$v
,
'mailto:'
)
===
0
){
...
...
@@ -629,10 +629,10 @@ if($e == 'font'){
$a2
.
=
' font-family: '
.
str_replace
(
'"'
,
'\''
,
trim
(
$m
[
2
]))
.
';'
;
}
if
(
preg_match
(
'`color\s*=\s*(\'|")?(.+?)(\\1|\s|$)`i'
,
$a
,
$m
)){
$a2
.
=
' color: '
.
trim
(
$m
[
2
])
.
';'
;
$a2
.
=
' color: '
.
str_replace
(
'"'
,
'\''
,
trim
(
$m
[
2
])
)
.
';'
;
}
if
(
preg_match
(
'`size\s*=\s*(\'|")?(.+?)(\\1|\s|$)`i'
,
$a
,
$m
)
&&
isset
(
$fs
[(
$m
=
trim
(
$m
[
2
]))])){
$a2
.
=
' font-size: '
.
$fs
[
$m
]
.
';'
;
$a2
.
=
' font-size: '
.
str_replace
(
'"'
,
'\''
,
$fs
[
$m
]
)
.
';'
;
}
$e
=
'span'
;
return
ltrim
(
$a2
);
}
...
...
@@ -644,7 +644,7 @@ return '';
function
hl_tidy
(
$t
,
$w
,
$p
){
// Tidy/compact HTM
if
(
strpos
(
' pre,script,textarea'
,
"
$p
,"
)){
return
$t
;}
$t
=
preg_replace
(
'`
[ \t\r\n\f]
+`'
,
' '
,
preg_replace_callback
(
array
(
'`(<(!\[CDATA\[))(.+?)(\]\]>)`sm'
,
'`(<(!--))(.+?)(-->)`sm'
,
'`(<(pre|script|textarea)[^>]*?>)(.+?)(</\2>)`sm'
),
create_function
(
'$m'
,
'return $m[1]. str_replace(array("<", ">", "\n", "\r", "\t", " "), array("\x01", "\x02", "\x03", "\x04", "\x05", "\x07"), $m[3]). $m[4];'
),
$t
));
$t
=
preg_replace
(
'`
\s
+`'
,
' '
,
preg_replace_callback
(
array
(
'`(<(!\[CDATA\[))(.+?)(\]\]>)`sm'
,
'`(<(!--))(.+?)(-->)`sm'
,
'`(<(pre|script|textarea)[^>]*?>)(.+?)(</\2>)`sm'
),
create_function
(
'$m'
,
'return $m[1]. str_replace(array("<", ">", "\n", "\r", "\t", " "), array("\x01", "\x02", "\x03", "\x04", "\x05", "\x07"), $m[3]). $m[4];'
),
$t
));
if
((
$w
=
strtolower
(
$w
))
==
-
1
){
return
str_replace
(
array
(
"
\x01
"
,
"
\x02
"
,
"
\x03
"
,
"
\x04
"
,
"
\x05
"
,
"
\x07
"
),
array
(
'<'
,
'>'
,
"
\n
"
,
"
\r
"
,
"
\t
"
,
' '
),
$t
);
}
...
...
@@ -667,7 +667,7 @@ while($X){
$r
=
''
;
list
(
$e
,
$r
)
=
explode
(
'>'
,
$t
[
$i
]);
$x
=
$e
[
0
]
==
'/'
?
0
:
(
substr
(
$e
,
-
1
)
==
'/'
?
1
:
(
$e
[
0
]
!=
'!'
?
2
:
-
1
));
$y
=
!
$x
?
ltrim
(
$e
,
'/'
)
:
(
$x
>
0
?
substr
(
$e
,
0
,
strcspn
(
$e
,
' '
))
:
0
);
$e
=
"<
$e
>"
;
$e
=
"<
$e
>"
;
if
(
isset
(
$d
[
$y
])){
if
(
!
$x
){
if
(
$n
){
echo
"
\n
"
,
str_repeat
(
$s
,
--
$n
),
"
$e
\n
"
,
str_repeat
(
$s
,
$n
);}
...
...
@@ -698,7 +698,7 @@ return str_replace(array("\x01", "\x02", "\x03", "\x04", "\x05", "\x07"), array(
function
hl_version
(){
// rel
return
'1.1.
16
'
;
return
'1.1.
20
'
;
// eof
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment