Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
cesa.co.za /
fpdf /
Delete
Unzip
Name
Size
Permission
Date
Action
cache
[ DIR ]
drwxr-sr-x
2017-05-29 10:14
classes
[ DIR ]
drwxr-sr-x
2013-05-22 07:48
data
[ DIR ]
drwxr-sr-x
2013-05-22 07:49
demo
[ DIR ]
drwxr-sr-x
2017-10-25 14:17
destinations
[ DIR ]
drwxr-sr-x
2013-05-22 07:51
features
[ DIR ]
drwxr-sr-x
2013-05-22 07:52
fonts
[ DIR ]
drwxr-sr-x
2013-05-22 07:54
fpdf
[ DIR ]
drwxr-sr-x
2013-05-22 07:55
help
[ DIR ]
drwxr-sr-x
2013-05-22 07:55
out
[ DIR ]
drwxr-sr-x
2013-05-22 07:56
postscript
[ DIR ]
drwxr-sr-x
2013-05-22 07:57
samples
[ DIR ]
drwxr-sr-x
2013-05-22 07:57
temp
[ DIR ]
drwxr-sr-x
2017-05-29 18:53
templates
[ DIR ]
drwxr-sr-x
2013-05-22 07:58
unittest
[ DIR ]
drwxr-sr-x
2013-05-22 07:59
.cvsignore
181
B
-rw-r--r--
2013-05-22 07:29
ChangeLog
52.56
KB
-rw-r--r--
2013-05-22 07:48
LICENSE
25.82
KB
-rw-r--r--
2013-05-22 07:56
TODO
894
B
-rw-r--r--
2013-05-22 07:58
autofix.url.php
1.8
KB
-rw-r--r--
2013-05-22 07:29
background.image.php
7.33
KB
-rw-r--r--
2013-05-22 07:29
background.position.php
2.17
KB
-rw-r--r--
2013-05-22 07:29
box.block.inline.php
5.24
KB
-rw-r--r--
2013-05-22 07:29
box.block.php
16.2
KB
-rw-r--r--
2013-05-22 07:29
box.body.php
894
B
-rw-r--r--
2013-05-22 07:29
box.br.php
6.07
KB
-rw-r--r--
2013-05-22 07:29
box.button.php
4.03
KB
-rw-r--r--
2013-05-22 07:29
box.button.reset.php
965
B
-rw-r--r--
2013-05-22 07:29
box.button.submit.php
2.86
KB
-rw-r--r--
2013-05-22 07:29
box.checkbutton.php
6.5
KB
-rw-r--r--
2013-05-22 07:29
box.container.php
33.85
KB
-rw-r--r--
2013-05-22 07:29
box.field.pageno.php
2.16
KB
-rw-r--r--
2013-05-22 07:29
box.field.pages.php
2.26
KB
-rw-r--r--
2013-05-22 07:29
box.form.php
842
B
-rw-r--r--
2013-05-22 07:29
box.frame.php
10.75
KB
-rw-r--r--
2013-05-22 07:29
box.generic.formatted.php
33.63
KB
-rw-r--r--
2013-05-22 07:29
box.generic.inline.php
3.72
KB
-rw-r--r--
2013-05-22 07:29
box.generic.php
11.08
KB
-rw-r--r--
2013-05-22 07:29
box.iframe.php
2.21
KB
-rw-r--r--
2013-05-22 07:29
box.img.php
9.76
KB
-rw-r--r--
2013-05-22 07:29
box.inline.control.php
3.15
KB
-rw-r--r--
2013-05-22 07:29
box.inline.php
14.46
KB
-rw-r--r--
2013-05-22 07:29
box.inline.simple.php
893
B
-rw-r--r--
2013-05-22 07:29
box.input.img.php
3.79
KB
-rw-r--r--
2013-05-22 07:29
box.input.password.php
2.05
KB
-rw-r--r--
2013-05-22 07:29
box.input.text.php
2.35
KB
-rw-r--r--
2013-05-22 07:29
box.input.textarea.php
1.91
KB
-rw-r--r--
2013-05-22 07:29
box.legend.php
1.55
KB
-rw-r--r--
2013-05-22 07:29
box.list-item.php
6.77
KB
-rw-r--r--
2013-05-22 07:29
box.note-call.class.php
6.23
KB
-rw-r--r--
2013-05-22 07:29
box.null.php
959
B
-rw-r--r--
2013-05-22 07:29
box.page.margin.class.php
18.82
KB
-rw-r--r--
2013-05-22 07:30
box.page.php
1.05
KB
-rw-r--r--
2013-05-22 07:30
box.php
18.32
KB
-rw-r--r--
2013-05-22 07:30
box.radiobutton.php
3.5
KB
-rw-r--r--
2013-05-22 07:30
box.select.php
4.3
KB
-rw-r--r--
2013-05-22 07:30
box.table.cell.fake.php
1.23
KB
-rw-r--r--
2013-05-22 07:30
box.table.cell.php
9.92
KB
-rw-r--r--
2013-05-22 07:30
box.table.php
43.15
KB
-rw-r--r--
2013-05-22 07:30
box.table.row.php
6.08
KB
-rw-r--r--
2013-05-22 07:30
box.table.section.php
1.52
KB
-rw-r--r--
2013-05-22 07:30
box.text.php
20.09
KB
-rw-r--r--
2013-05-22 07:30
box.text.string.php
1.41
KB
-rw-r--r--
2013-05-22 07:30
box.utils.text-align.inc.php
2.87
KB
-rw-r--r--
2013-05-22 07:30
box.whitespace.php
3.21
KB
-rw-r--r--
2013-05-22 07:30
config.inc.php
5.78
KB
-rw-r--r--
2013-05-22 07:48
config.parse.php
7.61
KB
-rw-r--r--
2013-05-22 07:48
content_type.class.php
506
B
-rw-r--r--
2013-05-22 07:48
converter.class.php
1.4
KB
-rw-r--r--
2013-05-22 07:48
css.background.attachment.inc.php
788
B
-rw-r--r--
2013-05-22 07:48
css.background.color.inc.php
1.98
KB
-rw-r--r--
2013-05-22 07:48
css.background.image.inc.php
1021
B
-rw-r--r--
2013-05-22 07:48
css.background.inc.php
2.13
KB
-rw-r--r--
2013-05-22 07:48
css.background.position.inc.php
3.56
KB
-rw-r--r--
2013-05-22 07:48
css.background.repeat.inc.php
1.47
KB
-rw-r--r--
2013-05-22 07:48
css.border.bottom.color.inc.php
753
B
-rw-r--r--
2013-05-22 07:48
css.border.bottom.inc.php
469
B
-rw-r--r--
2013-05-22 07:48
css.border.bottom.style.inc.php
726
B
-rw-r--r--
2013-05-22 07:48
css.border.bottom.width.inc.php
920
B
-rw-r--r--
2013-05-22 07:48
css.border.collapse.inc.php
812
B
-rw-r--r--
2013-05-22 07:48
css.border.color.inc.php
2.74
KB
-rw-r--r--
2013-05-22 07:48
css.border.inc.php
6.41
KB
-rw-r--r--
2013-05-22 07:48
css.border.left.color.inc.php
718
B
-rw-r--r--
2013-05-22 07:48
css.border.left.inc.php
459
B
-rw-r--r--
2013-05-22 07:48
css.border.left.style.inc.php
712
B
-rw-r--r--
2013-05-22 07:48
css.border.left.width.inc.php
904
B
-rw-r--r--
2013-05-22 07:48
css.border.right.color.inc.php
725
B
-rw-r--r--
2013-05-22 07:48
css.border.right.inc.php
464
B
-rw-r--r--
2013-05-22 07:48
css.border.right.style.inc.php
719
B
-rw-r--r--
2013-05-22 07:48
css.border.right.width.inc.php
912
B
-rw-r--r--
2013-05-22 07:48
css.border.style.inc.php
3.04
KB
-rw-r--r--
2013-05-22 07:49
css.border.top.color.inc.php
711
B
-rw-r--r--
2013-05-22 07:49
css.border.top.inc.php
455
B
-rw-r--r--
2013-05-22 07:49
css.border.top.style.inc.php
705
B
-rw-r--r--
2013-05-22 07:49
css.border.top.width.inc.php
896
B
-rw-r--r--
2013-05-22 07:49
css.border.width.inc.php
2.77
KB
-rw-r--r--
2013-05-22 07:49
css.bottom.inc.php
1.62
KB
-rw-r--r--
2013-05-22 07:49
css.cache.class.php
1018
B
-rw-r--r--
2013-05-22 07:49
css.clear.inc.php
903
B
-rw-r--r--
2013-05-22 07:49
css.color.inc.php
610
B
-rw-r--r--
2013-05-22 07:49
css.colors.inc.php
9.09
KB
-rw-r--r--
2013-05-22 07:49
css.constants.inc.php
6.32
KB
-rw-r--r--
2013-05-22 07:49
css.content.inc.php
3.39
KB
-rw-r--r--
2013-05-22 07:49
css.counter.collection.php
378
B
-rw-r--r--
2013-05-22 07:49
css.counter.php
419
B
-rw-r--r--
2013-05-22 07:49
css.direction.inc.php
685
B
-rw-r--r--
2013-05-22 07:49
css.display.inc.php
1
KB
-rw-r--r--
2013-05-22 07:49
css.float.inc.php
737
B
-rw-r--r--
2013-05-22 07:49
css.font-family.inc.php
1.22
KB
-rw-r--r--
2013-05-22 07:49
css.font-size.inc.php
1.51
KB
-rw-r--r--
2013-05-22 07:49
css.font-style.inc.php
531
B
-rw-r--r--
2013-05-22 07:49
css.font-weight.inc.php
671
B
-rw-r--r--
2013-05-22 07:49
css.font.inc.php
6.67
KB
-rw-r--r--
2013-05-22 07:49
css.frame.inc.php
100
B
-rw-r--r--
2013-05-22 07:49
css.height.inc.php
1.04
KB
-rw-r--r--
2013-05-22 07:49
css.html2ps.html.content.inc.php
984
B
-rw-r--r--
2013-05-22 07:49
css.html2ps.pixels.php
496
B
-rw-r--r--
2013-05-22 07:49
css.html2ps.pseudoelements.inc.php
755
B
-rw-r--r--
2013-05-22 07:49
css.inc.php
4.3
KB
-rw-r--r--
2013-05-22 07:49
css.left.inc.php
693
B
-rw-r--r--
2013-05-22 07:49
css.letter-spacing.inc.php
829
B
-rw-r--r--
2013-05-22 07:49
css.line-height.inc.php
1.88
KB
-rw-r--r--
2013-05-22 07:49
css.list-style-image.inc.php
1.06
KB
-rw-r--r--
2013-05-22 07:49
css.list-style-position.inc.php
695
B
-rw-r--r--
2013-05-22 07:49
css.list-style-type.inc.php
3.66
KB
-rw-r--r--
2013-05-22 07:49
css.list-style.inc.php
1.3
KB
-rw-r--r--
2013-05-22 07:49
css.margin.inc.php
2.87
KB
-rw-r--r--
2013-05-22 07:49
css.max-height.inc.php
1.3
KB
-rw-r--r--
2013-05-22 07:49
css.min-height.inc.php
1.22
KB
-rw-r--r--
2013-05-22 07:49
css.min-width.inc.php
521
B
-rw-r--r--
2013-05-22 07:49
css.orphans.inc.php
407
B
-rw-r--r--
2013-05-22 07:49
css.overflow.inc.php
910
B
-rw-r--r--
2013-05-22 07:49
css.padding.inc.php
2.96
KB
-rw-r--r--
2013-05-22 07:49
css.page-break-after.inc.php
351
B
-rw-r--r--
2013-05-22 07:49
css.page-break-before.inc.php
360
B
-rw-r--r--
2013-05-22 07:49
css.page-break-inside.inc.php
360
B
-rw-r--r--
2013-05-22 07:49
css.page-break.inc.php
813
B
-rw-r--r--
2013-05-22 07:49
css.page.inc.php
484
B
-rw-r--r--
2013-05-22 07:49
css.parse.inc.php
9.29
KB
-rw-r--r--
2013-05-22 07:49
css.parse.media.inc.php
805
B
-rw-r--r--
2013-05-22 07:49
css.parse.properties.php
1.92
KB
-rw-r--r--
2013-05-22 07:49
css.position.inc.php
1.06
KB
-rw-r--r--
2013-05-22 07:49
css.property.collection.php
2.99
KB
-rw-r--r--
2013-05-22 07:49
css.property.declaration.php
1.45
KB
-rw-r--r--
2013-05-22 07:49
css.property.handler.class.php
2.39
KB
-rw-r--r--
2013-05-22 07:49
css.property.stringset.class.php
783
B
-rw-r--r--
2013-05-22 07:49
css.property.sub.class.php
1.69
KB
-rw-r--r--
2013-05-22 07:49
css.property.sub.field.class.php
455
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.add.margin.inc.php
9
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.align.inc.php
1.75
KB
-rw-r--r--
2013-05-22 07:49
css.pseudo.cellpadding.inc.php
587
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.cellspacing.inc.php
587
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.form.action.inc.php
441
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.form.radiogroup.inc.php
477
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.link.destination.inc.php
484
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.link.target.inc.php
955
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.listcounter.inc.php
567
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.localalign.inc.php
588
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.nowrap.inc.php
532
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.table.border.inc.php
2.24
KB
-rw-r--r--
2013-05-22 07:49
css.right.inc.php
702
B
-rw-r--r--
2013-05-22 07:49
css.rules.inc.php
1.98
KB
-rw-r--r--
2013-05-22 07:49
css.rules.page.inc.php
11.19
KB
-rw-r--r--
2013-05-22 07:49
css.ruleset.class.php
9.87
KB
-rw-r--r--
2013-05-22 07:49
css.selectors.inc.php
7.4
KB
-rw-r--r--
2013-05-22 07:49
css.size.inc.php
1.54
KB
-rw-r--r--
2013-05-22 07:49
css.state.class.php
5.15
KB
-rw-r--r--
2013-05-22 07:49
css.table-layout.inc.php
734
B
-rw-r--r--
2013-05-22 07:49
css.text-align.inc.php
1.22
KB
-rw-r--r--
2013-05-22 07:49
css.text-decoration.inc.php
1.54
KB
-rw-r--r--
2013-05-22 07:49
css.text-indent.inc.php
845
B
-rw-r--r--
2013-05-22 07:49
css.text-transform.inc.php
1.1
KB
-rw-r--r--
2013-05-22 07:49
css.top.inc.php
685
B
-rw-r--r--
2013-05-22 07:49
css.utils.inc.php
4.95
KB
-rw-r--r--
2013-05-22 07:49
css.vertical-align.inc.php
4.91
KB
-rw-r--r--
2013-05-22 07:49
css.visibility.inc.php
941
B
-rw-r--r--
2013-05-22 07:49
css.white-space.inc.php
1.02
KB
-rw-r--r--
2013-05-22 07:49
css.widows.inc.php
394
B
-rw-r--r--
2013-05-22 07:49
css.width.inc.php
1.76
KB
-rw-r--r--
2013-05-22 07:49
css.word-spacing.inc.php
817
B
-rw-r--r--
2013-05-22 07:49
css.z-index.inc.php
473
B
-rw-r--r--
2013-05-22 07:49
default.css
7.31
KB
-rw-r--r--
2013-05-22 07:50
destination._http.class.php
618
B
-rw-r--r--
2013-05-22 07:51
destination._interface.class.php
518
B
-rw-r--r--
2013-05-22 07:51
destination.browser.class.php
377
B
-rw-r--r--
2013-05-22 07:50
destination.download.class.php
540
B
-rw-r--r--
2013-05-22 07:50
destination.file.class.php
622
B
-rw-r--r--
2013-05-22 07:51
dispatcher.class.php
713
B
-rw-r--r--
2013-05-22 07:51
doc.anchor.class.php
1.07
KB
-rw-r--r--
2013-05-22 07:51
dom.activelink.inc.php
2.81
KB
-rw-r--r--
2013-05-22 07:51
dom.php4.inc.php
1.5
KB
-rw-r--r--
2013-05-22 07:51
dom.php5.inc.php
1.88
KB
-rw-r--r--
2013-05-22 07:51
encoding.cp1251.inc.php
10.38
KB
-rw-r--r--
2013-05-22 07:51
encoding.cp866.inc.php
10.89
KB
-rw-r--r--
2013-05-22 07:51
encoding.dingbats.inc.php
11.71
KB
-rw-r--r--
2013-05-22 07:51
encoding.entities.inc.php
25.8
KB
-rw-r--r--
2013-05-22 07:51
encoding.glyphs.inc.php
101.68
KB
-rw-r--r--
2013-05-22 07:51
encoding.inc.php
1.61
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-1.inc.php
10.49
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-10.inc.php
10.92
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-11.inc.php
9.63
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-13.inc.php
10.6
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-14.inc.php
10.98
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-15.inc.php
10.55
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-2.inc.php
16.24
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-3.inc.php
15.74
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-4.inc.php
10.71
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-5.inc.php
10.36
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-6.inc.php
8.88
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-7.inc.php
10.22
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-8.inc.php
5.96
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-9.inc.php
10.49
KB
-rw-r--r--
2013-05-22 07:51
encoding.koi8-r.inc.php
11.09
KB
-rw-r--r--
2013-05-22 07:51
encoding.symbol.inc.php
10.04
KB
-rw-r--r--
2013-05-22 07:51
encoding.windows-1250.inc.php
17
KB
-rw-r--r--
2013-05-22 07:52
encoding.windows-1251.inc.php
10.39
KB
-rw-r--r--
2013-05-22 07:52
encoding.windows-1252.inc.php
16.32
KB
-rw-r--r--
2013-05-22 07:52
error.php
191
B
-rw-r--r--
2013-05-22 07:52
favicon.ico
1
B
-rw-r--r--
2013-05-22 07:52
fetched_data._html.class.php
405
B
-rw-r--r--
2013-05-22 07:52
fetched_data._interface.class.php
286
B
-rw-r--r--
2013-05-22 07:52
fetched_data.file.class.php
688
B
-rw-r--r--
2013-05-22 07:52
fetched_data.url.class.php
1.31
KB
-rw-r--r--
2013-05-22 07:52
fetcher._interface.class.php
995
B
-rw-r--r--
2013-05-22 07:52
fetcher.local.class.php
357
B
-rw-r--r--
2013-05-22 07:52
fetcher.memory.class.php
600
B
-rw-r--r--
2013-05-22 07:52
fetcher.url.class.php
14.88
KB
-rw-r--r--
2013-05-22 07:52
fetcher.url.curl.class.php
2.6
KB
-rw-r--r--
2013-05-22 07:52
filter.data._interface.class.php
138
B
-rw-r--r--
2013-05-22 07:52
filter.data.doctype.class.php
1.98
KB
-rw-r--r--
2013-05-22 07:52
filter.data.encoding.class.php
889
B
-rw-r--r--
2013-05-22 07:52
filter.data.html2xhtml.class.php
211
B
-rw-r--r--
2013-05-22 07:52
filter.data.ucs2.class.php
283
B
-rw-r--r--
2013-05-22 07:52
filter.data.utf8.class.php
284
B
-rw-r--r--
2013-05-22 07:52
filter.data.xhtml2xhtml.class.php
169
B
-rw-r--r--
2013-05-22 07:52
filter.output._interface.class.php
249
B
-rw-r--r--
2013-05-22 07:52
filter.output.gzip.class.php
391
B
-rw-r--r--
2013-05-22 07:52
filter.output.ps2pdf.class.php
1.28
KB
-rw-r--r--
2013-05-22 07:52
filter.post._interface.class.php
142
B
-rw-r--r--
2013-05-22 07:52
filter.post.positioned.class.php
806
B
-rw-r--r--
2013-05-22 07:52
filter.post.postponed.class.php
765
B
-rw-r--r--
2013-05-22 07:52
filter.pre._interface.class.php
160
B
-rw-r--r--
2013-05-22 07:52
filter.pre.fields.class.php
1.7
KB
-rw-r--r--
2013-05-22 07:52
filter.pre.footnotes.class.php
1.16
KB
-rw-r--r--
2013-05-22 07:52
filter.pre.headfoot.class.php
1.05
KB
-rw-r--r--
2013-05-22 07:52
filter.pre.height-constraint.class.php
1.2
KB
-rw-r--r--
2013-05-22 07:52
flow_context.class.inc.php
11.75
KB
-rw-r--r--
2013-05-22 07:52
flow_viewport.class.inc.php
829
B
-rw-r--r--
2013-05-22 07:52
font.class.php
6.15
KB
-rw-r--r--
2013-05-22 07:52
font.constants.inc.php
228
B
-rw-r--r--
2013-05-22 07:52
font.resolver.class.php
7.41
KB
-rw-r--r--
2013-05-22 07:52
font_factory.class.php
1.51
KB
-rw-r--r--
2013-05-22 07:55
globals.inc.php
51
B
-rw-r--r--
2013-05-22 07:55
globals.php
119
B
-rw-r--r--
2013-05-22 07:55
height.php
7.25
KB
-rw-r--r--
2013-05-22 07:55
html.attrs.inc.php
31.84
KB
-rw-r--r--
2013-05-22 07:56
html2ps.config
7.99
KB
-rw-r--r--
2013-05-22 07:56
html2ps.config.recommended
8.94
KB
-rw-r--r--
2013-05-22 07:56
image.class.php
5.3
KB
-rw-r--r--
2013-05-22 07:56
index.php
185
B
-rw-r--r--
2013-05-22 07:56
inline.content.builder.factory.php
1.03
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.normal.php
1.65
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.nowrap.php
632
B
-rw-r--r--
2013-05-22 07:56
inline.content.builder.php
53.41
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.pre.line.php
1.09
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.pre.php
938
B
-rw-r--r--
2013-05-22 07:56
inline.content.builder.pre.wrap.php
1.18
KB
-rw-r--r--
2013-05-22 07:56
layout._interface.class.php
149
B
-rw-r--r--
2013-05-22 07:56
layout.default.class.php
3.25
KB
-rw-r--r--
2013-05-22 07:56
layout.page.breaks.php
21.75
KB
-rw-r--r--
2013-05-22 07:56
layout.vertical.php
1.46
KB
-rw-r--r--
2013-05-22 07:56
list-style.image.php
335
B
-rw-r--r--
2013-05-22 07:56
logger.php
424
B
-rw-r--r--
2013-05-22 07:56
manager.encoding.php
8.57
KB
-rw-r--r--
2013-05-22 07:56
media.layout.inc.php
3.6
KB
-rw-r--r--
2013-05-22 07:56
observer.class.php
89
B
-rw-r--r--
2013-05-22 07:56
ot.class.php
27.21
KB
-rw-r--r--
2013-05-22 07:56
output._generic.class.php
8.72
KB
-rw-r--r--
2013-05-22 07:56
output._generic.pdf.class.php
582
B
-rw-r--r--
2013-05-22 07:56
output._generic.ps.class.php
851
B
-rw-r--r--
2013-05-22 07:56
output._interface.class.php
2.78
KB
-rw-r--r--
2013-05-22 07:56
output.fastps.class.php
12.54
KB
-rw-r--r--
2013-05-22 07:56
output.fastps.l2.class.php
2.95
KB
-rw-r--r--
2013-05-22 07:56
output.fpdf.class.php
11.46
KB
-rw-r--r--
2013-05-22 07:56
output.pcl.class.php
8.35
KB
-rw-r--r--
2013-05-22 07:56
output.pdflib.1.6.class.php
7.66
KB
-rw-r--r--
2013-05-22 07:56
output.pdflib.class.php
12.68
KB
-rw-r--r--
2013-05-22 07:56
output.pdflib.old.class.php
959
B
-rw-r--r--
2013-05-22 07:56
output.png.class.php
15.33
KB
-rw-r--r--
2013-05-22 07:56
parser._interface.class.php
134
B
-rw-r--r--
2013-05-22 07:56
parser.xhtml.class.php
3.24
KB
-rw-r--r--
2013-05-22 07:56
path.php
3.3
KB
-rw-r--r--
2013-05-22 07:56
path.point.php
187
B
-rw-r--r--
2013-05-22 07:56
path.rectangle.php
566
B
-rw-r--r--
2013-05-22 07:56
pdf.fpdf.makefont.php
13.08
KB
-rw-r--r--
2013-05-22 07:56
pdf.fpdf.php
86.35
KB
-rw-r--r--
2013-05-22 07:56
pipeline.class.php
43.81
KB
-rw-r--r--
2013-05-22 07:56
pipeline.factory.class.php
1.17
KB
-rw-r--r--
2013-05-22 07:56
ps.image.encoder.inc.php
8
B
-rw-r--r--
2013-05-22 07:57
ps.image.encoder.simple.inc.php
7.07
KB
-rw-r--r--
2013-05-22 07:57
ps.image.encoder.stream.inc.php
657
B
-rw-r--r--
2013-05-22 07:57
ps.l2.image.encoder.stream.inc.php
1.13
KB
-rw-r--r--
2013-05-22 07:57
ps.l3.image.encoder.stream.inc.php
7.92
KB
-rw-r--r--
2013-05-22 07:57
ps.unicode.inc.php
3.07
KB
-rw-r--r--
2013-05-22 07:57
ps.utils.inc.php
344
B
-rw-r--r--
2013-05-22 07:57
ps.whitespace.inc.php
103
B
-rw-r--r--
2013-05-22 07:57
render.queue.class.php
275
B
-rw-r--r--
2013-05-22 07:57
render.stacking.context.class.php
589
B
-rw-r--r--
2013-05-22 07:57
render.stacking.level.class.php
246
B
-rw-r--r--
2013-05-22 07:57
strategy.link.rendering.normal.php
929
B
-rw-r--r--
2013-05-22 07:57
strategy.page.break.simple.php
370
B
-rw-r--r--
2013-05-22 07:57
strategy.page.break.smart.php
395
B
-rw-r--r--
2013-05-22 07:57
strategy.position.absolute.php
3.07
KB
-rw-r--r--
2013-05-22 07:57
strategy.table.layout.auto.php
10.07
KB
-rw-r--r--
2013-05-22 07:57
strategy.table.layout.fixed.php
381
B
-rw-r--r--
2013-05-22 07:57
strategy.width.absolute.positioned.php
7.54
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.max.natural.php
2.55
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.max.php
2.14
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.min.nowrap.php
1.36
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.min.php
2.01
KB
-rw-r--r--
2013-05-22 07:58
stubs._.inc.php
48
B
-rw-r--r--
2013-05-22 07:58
stubs.common.inc.php
615
B
-rw-r--r--
2013-05-22 07:58
stubs.file_get_contents.inc.php
253
B
-rw-r--r--
2013-05-22 07:58
stubs.file_put_contents.inc.php
133
B
-rw-r--r--
2013-05-22 07:58
stubs.is_executable.inc.php
54
B
-rw-r--r--
2013-05-22 07:58
stubs.memory_get_usage.inc.php
854
B
-rw-r--r--
2013-05-22 07:58
tag.body.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.font.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.frame.inc.php
3.59
KB
-rw-r--r--
2013-05-22 07:58
tag.img.inc.php
98
B
-rw-r--r--
2013-05-22 07:58
tag.input.inc.php
156
B
-rw-r--r--
2013-05-22 07:58
tag.select.inc.php
100
B
-rw-r--r--
2013-05-22 07:58
tag.span.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.table.inc.php
99
B
-rw-r--r--
2013-05-22 07:58
tag.td.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.utils.inc.php
98
B
-rw-r--r--
2013-05-22 07:58
tree.navigation.inc.php
1.68
KB
-rw-r--r--
2013-05-22 07:58
treebuilder.class.php
2.25
KB
-rw-r--r--
2013-05-22 07:58
utils_array.php
1.95
KB
-rw-r--r--
2013-05-22 07:59
utils_graphic.php
1.46
KB
-rw-r--r--
2013-05-22 07:59
utils_number.php
451
B
-rw-r--r--
2013-05-22 07:59
utils_text.php
182
B
-rw-r--r--
2013-05-22 07:59
utils_units.php
1.84
KB
-rw-r--r--
2013-05-22 07:59
utils_url.php
2.22
KB
-rw-r--r--
2013-05-22 07:59
value.background.php
4.81
KB
-rw-r--r--
2013-05-22 07:59
value.border.class.php
5.64
KB
-rw-r--r--
2013-05-22 07:59
value.border.color.class.php
483
B
-rw-r--r--
2013-05-22 07:59
value.border.edge.class.php
7.44
KB
-rw-r--r--
2013-05-22 07:59
value.border.style.class.php
451
B
-rw-r--r--
2013-05-22 07:59
value.border.width.class.php
483
B
-rw-r--r--
2013-05-22 07:59
value.bottom.php
314
B
-rw-r--r--
2013-05-22 07:59
value.color.php
1.14
KB
-rw-r--r--
2013-05-22 07:59
value.content.item.php
5
KB
-rw-r--r--
2013-05-22 07:59
value.content.php
1.01
KB
-rw-r--r--
2013-05-22 07:59
value.font.class.php
1.57
KB
-rw-r--r--
2013-05-22 07:59
value.generic.length.php
2.44
KB
-rw-r--r--
2013-05-22 07:59
value.generic.percentage.php
1.77
KB
-rw-r--r--
2013-05-22 07:59
value.generic.php
294
B
-rw-r--r--
2013-05-22 07:59
value.height.php
314
B
-rw-r--r--
2013-05-22 07:59
value.left.php
308
B
-rw-r--r--
2013-05-22 07:59
value.line-height.class.php
909
B
-rw-r--r--
2013-05-22 07:59
value.list-style.class.php
1.25
KB
-rw-r--r--
2013-05-22 07:59
value.margin.class.php
3.43
KB
-rw-r--r--
2013-05-22 07:59
value.max-height.php
323
B
-rw-r--r--
2013-05-22 07:59
value.min-height.php
323
B
-rw-r--r--
2013-05-22 07:59
value.padding.class.php
3.29
KB
-rw-r--r--
2013-05-22 07:59
value.right.php
311
B
-rw-r--r--
2013-05-22 07:59
value.text-indent.class.php
845
B
-rw-r--r--
2013-05-22 07:59
value.top.php
305
B
-rw-r--r--
2013-05-22 07:59
width.constraint.php
909
B
-rw-r--r--
2013-05-22 07:59
width.php
2.16
KB
-rw-r--r--
2013-05-22 07:59
xhtml.autoclose.inc.php
2.31
KB
-rw-r--r--
2013-05-22 07:59
xhtml.comments.inc.php
240
B
-rw-r--r--
2013-05-22 07:59
xhtml.deflist.inc.php
854
B
-rw-r--r--
2013-05-22 07:59
xhtml.entities.inc.php
2.88
KB
-rw-r--r--
2013-05-22 07:59
xhtml.lists.inc.php
982
B
-rw-r--r--
2013-05-22 07:59
xhtml.p.inc.php
1.16
KB
-rw-r--r--
2013-05-22 07:59
xhtml.script.inc.php
211
B
-rw-r--r--
2013-05-22 07:59
xhtml.selects.inc.php
727
B
-rw-r--r--
2013-05-22 07:59
xhtml.style.inc.php
1.18
KB
-rw-r--r--
2013-05-22 07:59
xhtml.tables.inc.php
4.49
KB
-rw-r--r--
2013-05-22 07:59
xhtml.utils.inc.php
15.36
KB
-rw-r--r--
2013-05-22 07:59
xml.validation.inc.php
326
B
-rw-r--r--
2013-05-22 07:59
Save
Rename
<?php // $Header: /cvsroot/html2ps/xhtml.utils.inc.php,v 1.35 2007/03/15 18:37:36 Konstantin Exp $ function close_tag($tag, $sample_html) { return preg_replace("!(<{$tag}(\s[^>]*[^/>])?)>!si","\\1/>",$sample_html); }; function make_attr_value($attr, $html) { return preg_replace("#(<[^>]*\s){$attr}(\s|>|/>)#si","\\1{$attr}=\"{$attr}\"\\2",$html); }; function mk_open_tag_regexp($tag) { return "<\s*{$tag}(\s+[^>]*)?>"; }; function mk_close_tag_regexp($tag) { return "<\s*/\s*{$tag}\s*>"; }; function process_html($html) { $open = mk_open_tag_regexp("html"); $close = mk_close_tag_regexp("html"); if (!preg_match("#{$open}#is",$html)) { $html = "<html>".$html; }; /** * Let's check if there's more than one <html> tags inside the page text * If there are, remove everything except the first one and content between the first and second <html> */ while (preg_match("#{$open}(.*?){$open}#is", $html)) { $html = preg_replace("#{$open}(.*?){$open}#is", "<html>\\2", $html); }; if (!preg_match("#{$close}#is", $html)) { $html = $html."</html>"; }; // PHP 5.2.0 compatilibty issue // preg_replace may accidentally return NULL on large files not matching this // protect from twice processed $html = preg_replace("#.*({$open})#is","\\1", $html); // PHP 5.2.0 compatilibty issue // preg_replace may accidentally return NULL on large files not matching this // Cut off all data before and after 'html' tag; unless we'll do it, // the XML parser will die violently $html = preg_replace("#^.*<html#is","<html", $html); $html = preg_replace("#</html\s*>.*$#is","</html>",$html); if (!$html) { trigger_error('pcre.pcre.backtrack_limit('.ini_get('pcre.backtrack_limit').') and pcre.recursion_limit('.ini_get('pcre.recursion_limit').') too low', E_USER_ERROR); } return $html; } function process_head($html) { $open = mk_open_tag_regexp("head"); $close = mk_close_tag_regexp("head"); $ohtml = mk_open_tag_regexp("html"); $chtml = mk_close_tag_regexp("html"); $obody = mk_open_tag_regexp("body"); if (!preg_match("#{$open}#is",$html)) { $html = preg_replace("#({$ohtml})(.*)({$obody})#is","\\1<head>\\3</head>\\4",$html); } elseif (!preg_match("#{$close}#is",$html)) { if (preg_match("#{$obody}#is",$html)) { $html = preg_replace("#({$obody})#is","</head>\\1",$html); } else { $html = preg_replace("#({$chtml})#is","</head>\\1",$html); }; }; return $html; } function process_body($html) { $open = mk_open_tag_regexp("body"); $close = mk_close_tag_regexp("body"); $ohtml = mk_open_tag_regexp("html"); $chtml = mk_close_tag_regexp("html"); $chead = mk_close_tag_regexp("head"); if (!preg_match("#{$open}#is",$html)) { if (preg_match("#{$chead}#is",$html)) { $html = preg_replace("#({$chead})#is","\\1<body>",$html); } else { $html = preg_replace("#({$ohtml})#is","\\1<body>",$html); }; }; if (!preg_match("#{$close}#is",$html)) { $html = preg_replace("#({$chtml})#is","</body>\\1",$html); }; // Now check is there any data between </head> and <body>. $html = preg_replace("#({$chead})(.+)({$open})#is","\\1\\3\\2",$html); // Check if there's any data between </body> and </html> $html = preg_replace("#({$close})(.+)({$chtml})#is","\\2\\1\\3",$html); return $html; } // Hmmm. May be we'll just write SAX parser on PHP? ;-) function fix_tags($html) { $result = ""; $tag_stack = array(); // these corrections can simplify the regexp used to parse tags // remove whitespaces before '/' and between '/' and '>' in autoclosing tags $html = preg_replace("#\s*/\s*>#is","/>",$html); // remove whitespaces between '<', '/' and first tag letter in closing tags $html = preg_replace("#<\s*/\s*#is","</",$html); // remove whitespaces between '<' and first tag letter $html = preg_replace("#<\s+#is","<",$html); while (preg_match("#(.*?)(<([a-z\d]+)[^>]*/>|<([a-z\d]+)[^>]*(?<!/)>|</([a-z\d]+)[^>]*>)#is",$html,$matches)) { $result .= $matches[1]; $html = substr($html, strlen($matches[0])); // Closing tag if (isset($matches[5])) { $tag = $matches[5]; if ($tag == $tag_stack[0]) { // Matched the last opening tag (normal state) // Just pop opening tag from the stack array_shift($tag_stack); $result .= $matches[2]; } elseif (array_search($tag, $tag_stack)) { // We'll never should close 'table' tag such way, so let's check if any 'tables' found on the stack $no_critical_tags = !array_search('table',$tag_stack); if (!$no_critical_tags) { $no_critical_tags = (array_search('table',$tag_stack) >= array_search($tag, $tag_stack)); }; if ($no_critical_tags) { // Corresponding opening tag exist on the stack (somewhere deep) // Note that we can forget about 0 value returned by array_search, becaus it is handled by previous 'if' // Insert a set of closing tags for all non-matching tags $i = 0; while ($tag_stack[$i] != $tag) { $result .= "</{$tag_stack[$i]}> "; $i++; }; // close current tag $result .= "</{$tag_stack[$i]}> "; // remove it from the stack array_splice($tag_stack, $i, 1); // if this tag is not "critical", reopen "run-off" tags $no_reopen_tags = array("tr","td","table","marquee","body","html"); if (array_search($tag, $no_reopen_tags) === false) { while ($i > 0) { $i--; $result .= "<{$tag_stack[$i]}> "; }; } else { array_splice($tag_stack, 0, $i); }; }; } else { // No such tag found on the stack, just remove it (do nothing in out case, as we have to explicitly // add things to result }; } elseif (isset($matches[4])) { // Opening tag $tag = $matches[4]; array_unshift($tag_stack, $tag); $result .= $matches[2]; } else { // Autoclosing tag; do nothing specific $result .= $matches[2]; }; }; // Close all tags left while (count($tag_stack) > 0) { $tag = array_shift($tag_stack); $result .= "</".$tag.">"; } return $result; } /** * This function adds quotes to attribute values; it attribute values already have quotes, no changes are made */ function quote_attrs($html) { while (preg_match("!(<[^>]*)\s([^=>]+)=([^'\"\r\n >]+)([\r\n >])!si",$html, $matches)) { $html = preg_replace("#(<[^>]*)\s([^=>]+)=([^'\"\r\n >]+)([\r\n >])#si","\\1 \\2='\\3'\\4",$html); }; return $html; }; function escape_attr_value_entities($html) { $html = str_replace("<","<",$html); $html = str_replace(">",">",$html); // Replace all character references by their decimal codes process_character_references($html); $html = escape_amp($html); return $html; } /** * Updates attribute values: if there's any unescaped <, > or & symbols inside an attribute value, * replaces them with corresponding entity. Also note that & should not be escaped if it is already the part * of entity reference * * @param String $html source HTML code * @return String updated HTML code */ function escape_attrs_entities($html) { $result = ""; // Regular expression may be described as follows: // (<[^>]*) - something starting with < (i.e. tag name and, probably, some attribute name/values pairs // \s([^\s=>]+)= - space after "something", followed by attribute name (which may contain anything except spaces, = and > signs // (['\"])([^\3]*?)\3 - quoted attribute value; (@todo won't work with escaped quotes inside value, by the way). while (preg_match("#^(.*)(<[^>]*)\s([^\s=>]+)=(['\"])([^\\4]*?)\\4(.*)$#si", $html, $matches)) { $new_value = escape_attr_value_entities($matches[5]); $result .= $matches[1].$matches[2]." ".$matches[3]."=".$matches[4].$new_value.$matches[4]; $html = $matches[6]; }; return $result.$html; }; function fix_attrs_spaces(&$html) { while (preg_match("#(<[^>]*)\s([^\s=>]+)=\"([^\"]*?)\"([^\s])#si", $html)) { $html = preg_replace("#(<[^>]*)\s([^\s=>]+)=\"([^\"]*?)\"([^\s])#si","\\1 \\2=\"\\3\" \\4",$html); }; while (preg_match("#(<[^>]*)\s([^\s=>]+)='([^']*?)'([^\s])#si", $html)) { $html = preg_replace("#(<[^>]*)\s([^\s=>]+)='([^']*?)'([^\s])#si","\\1 \\2='\\3' \\4",$html); }; } function fix_attrs_tag($tag) { if (preg_match("#(<)(.*?)(/\s*>)#is",$tag, $matches)) { $prefix = $matches[1]; $suffix = $matches[3]; $content = $matches[2]; } elseif (preg_match("#(<)(.*?)(>)#is",$tag, $matches)) { $prefix = $matches[1]; $suffix = $matches[3]; $content = $matches[2]; } else { return; }; if (preg_match("#^\s*(\w+)\s*(.*)\s*/\s*\$#is", $content, $matches)) { $tagname = $matches[1]; $raw_attrs = isset($matches[2]) ? $matches[2] : ""; } elseif (preg_match("#^\s*(\w+)\s*(.*)\$#is", $content, $matches)) { $tagname = $matches[1]; $raw_attrs = isset($matches[2]) ? $matches[2] : ""; } else { // A strange tag occurred; just remove everything $tagname = ""; $raw_attrs = ""; }; $attrs = array(); while (!empty($raw_attrs)) { if (preg_match("#^\s*(\w+?)\s*=\s*\"(.*?)\"(.*)$#is",$raw_attrs,$matches)) { $attr = strtolower($matches[1]); $value = $matches[2]; if (!isset($attrs[$attr])) { $attrs[$attr] = $value; }; $raw_attrs = $matches[3]; } elseif (preg_match("#^\s*(\w+?)\s*=\s*'(.*?)'(.*)$#is",$raw_attrs,$matches)) { $attr = strtolower($matches[1]); $value = $matches[2]; if (!isset($attrs[$attr])) { $attrs[$attr] = $value; }; $raw_attrs = $matches[3]; } elseif (preg_match("#^\s*(\w+?)=(\w+)(.*)$#is",$raw_attrs,$matches)) { $attr = strtolower($matches[1]); $value = $matches[2]; if (!isset($attrs[$attr])) { $attrs[$attr] = $value; }; $raw_attrs = $matches[3]; } elseif (preg_match("#^\s*\S+\s+(.*)$#is",$raw_attrs,$matches)) { // Just a junk at the beginning; skip till the first space $raw_attrs = $matches[1]; } else { $raw_attrs = ""; }; }; $str = ""; foreach ($attrs as $key => $value) { // In theory, if the garbage have been found inside the attrs section, we could get // and invalid attribute name here; just ignore them in this case if (HTML2PS_XMLUtils::valid_attribute_name($key)) { if (strpos($value,'"') !== false) { $str .= " ".$key."='".$value."'"; } else { $str .= " ".$key."=\"".$value."\""; }; }; }; return $prefix.$tagname.$str.$suffix; } function fix_attrs($html) { $result = ""; while (preg_match("#^(.*?)(<[^/].*?>)#is",$html,$matches)) { $result .= $matches[1].fix_attrs_tag($matches[2]); $html = substr($html, strlen($matches[0])); }; return $result.$html; } function fix_closing_tags($html) { return preg_replace("#</\s*(\w+).*?>#","</\\1>",$html); } function process_pagebreak_commands(&$html) { $html = preg_replace("#<\?page-break>|<!--NewPage-->#","<pagebreak/>",$html); } function xhtml2xhtml($html) { process_pagebreak_commands($html); // Remove STYLE tags for the same reason and store them in the temporary variable // later they will be added back to HEAD section $styles = process_style($html); // Do HTML -> XML (XHTML) conversion // Convert HTML character references to their Unicode analogues process_character_references($html); remove_comments($html); // Convert all tags to lower case $html = lowercase_tags($html); $html = lowercase_closing_tags($html); // Remove SCRIPT tags $html = process_script($html); $html = insert_styles($html, $styles); return $html; } function html2xhtml($html) { process_pagebreak_commands($html); // Remove SCRIPT tags from the page being processed, as script content may // mess the firther html-parsing utilities $html = process_script($html); // Remove STYLE tags for the same reason and store them in the temporary variable // later they will be added back to HEAD section $styles = process_style($html); // Convert HTML character references to their Unicode analogues process_character_references($html); remove_comments($html); fix_attrs_spaces($html); $html = quote_attrs($html); $html = escape_attrs_entities($html); $html = lowercase_tags($html); $html = lowercase_closing_tags($html); $html = fix_closing_tags($html); $html = close_tag("area",$html); $html = close_tag("base",$html); $html = close_tag("basefont",$html); $html = close_tag("br",$html); $html = close_tag("col",$html); $html = close_tag("embed",$html); $html = close_tag("frame",$html); $html = close_tag("hr",$html); $html = close_tag("img",$html); $html = close_tag("input",$html); $html = close_tag("isindex",$html); $html = close_tag("link",$html); $html = close_tag("meta",$html); $html = close_tag("param",$html); $html = make_attr_value("checked",$html); $html = make_attr_value("compact",$html); $html = make_attr_value("declare",$html); $html = make_attr_value("defer",$html); $html = make_attr_value("disabled",$html); $html = make_attr_value("ismap",$html); $html = make_attr_value("multiple",$html); $html = make_attr_value("nohref",$html); $html = make_attr_value("noresize",$html); $html = make_attr_value("noshade",$html); $html = make_attr_value("nowrap",$html); $html = make_attr_value("readonly",$html); $html = make_attr_value("selected",$html); $html = process_html($html); $html = process_body($html); $html = process_head($html); $html = process_p($html); $html = escape_amp($html); $html = escape_lt($html); $html = escape_gt($html); $html = escape_textarea_content($html); process_tables($html,0); process_lists($html,0); process_deflists($html,0); process_selects($html,0); $html = fix_tags($html); $html = fix_attrs($html); $html = insert_styles($html, $styles); return $html; } function escape_textarea_content($html) { preg_match_all('#<textarea(.*)>(.*)<\s*/\s*textarea\s*>#Uis', $html, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER); // Why cycle from the last to first match? // It will keep unprocessed matches offsets valid, // as escaped content may differ from original content in length, for ($i = count($matches)-1; $i>=0; $i--) { $match = $matches[$i]; $match_offset = $match[2][1]; $match_content = $match[2][0]; $match_length = strlen($match_content); $escaped_content = preg_replace('/&([^#])/', '&\1', str_replace('>', '>', str_replace('<', '<', $match_content))); $html = substr_replace($html, $escaped_content, $match_offset, $match_length); }; return $html; } function lowercase_tags($html) { $result = ""; while (preg_match("#^(.*?)(</?)([a-zA-z0-9]+)([\s>])#is",$html,$matches)) { // Drop extracted part $html = substr($html,strlen($matches[0])); // Move extracted part to the result $result .= $matches[1].$matches[2].strtolower($matches[3]).$matches[4]; }; return $result.$html; }; function lowercase_closing_tags($html) { $result = ""; while (preg_match("#^(.*?)(<)([a-zA-z0-9]+)(\s*/\s*>)#is",$html,$matches)) { // Drop extracted part $html = substr($html,strlen($matches[0])); // Move extracted part to the result $result .= $matches[1].$matches[2].strtolower($matches[3]).$matches[4]; }; return $result.$html; }; ?>