voku / HtmlMin

:clamp: HtmlMin: HTML Compressor and Minifier via PHP

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HTML inside script tags is turned invalid

ozupey opened this issue · comments

What is this feature about (expected vs actual behaviour)?

Any HTML that's inside a <script type=text/html> tag is turned invalid. Similar to issue #26. Seems like voku/simple_html_dom@e6e597e#diff-c9aceb5e54e67d5f19805df3f679fb1bR389 only works on double quotes or single quotes (type="text/html" or type='text/html') rather than no quotes at all (type=text/html).

string(81) "<script type=text/html><p>Foo

	<div class="alert alert-success">
		Bar</script>"

How can I reproduce it?

$html = '
<script type=text/html>
	<p>Foo</p>

	<div class="alert alert-success">
		Bar
	</div>
</script>
';

$htmlMin = new voku\helper\HtmlMin();
$result = $htmlMin->minify($html);

var_dump($result);

Does it take minutes, hours or days to fix?

Unsure

Any additional information?

Using 3.1.3 installed via composer on PHP 7.2.10.

Thanks for the bug report, fixed in version 3.1.6

It looks like any occurrence of {{ will cancel minification.

It seems to be on purpose, but I'm not sure why: https://github.com/voku/simple_html_dom/blob/master/src/voku/helper/HtmlDomParser.php#L947

If I disable that line, it minifies just fine and I'm not seeing any negative effects.

<script type="text/html">
	{{foo}}

	{{bar}}

	{{hello}}
</script>

Will result in:

string(63) "<script type=text/html>	{{foo}}

	{{bar}}

	{{hello}}
</script>"

It would be nice if there was at least an option to force minification of these special tags, perhaps disabled by default. :)

Hi and thanks for the bug report (again) 👍 ... fixed in version 4.4.0. Here is an example: 9a88a5c#diff-468b8a043eb54ed31edbee53141c1512R769