使用PHP对字符串内的JavaScript、HTML和CSS进行压缩

5

我看到的所有PHP压缩函数都是处理实际的JavaScript、HTML、CSS文件。我想要一个函数,当给出下面这样的内容时:

$code = "<html>
    <body>";

我想把它压缩到一行。我不需要像YUI Compressor这样的东西,因为它处理的是服务器上的文件。我只想要一个可以将传递给它的字符串进行压缩的函数。这种函数是否存在?


你应该能够使用SPL模拟一个文件。将字符串放入文件中,然后将其传递给已知的压缩函数。 - SH-
虽然听起来相当低效,但有没有直接的函数可以做到这一点? - Witch-King
可能,也可能不是。SPL有一个模拟文件,可以放在内存中。我不确定它的效率有多低。请参见:http://www.php.net/manual/en/spltempfileobject.construct.php。 - SH-
3个回答

9
你可能在寻找以下内容:
$code = "<html>
    <body>";

echo str_replace(array("\r", "\n"), '', $code);

嗯,我正在寻找一个完整的缩小功能,这样你就可以将例如 Google 的前端源代码传递给它。 - Witch-King
它会做什么?获取所有资产(例如外部JS / CSS /图像等)并将其内联/缩小吗?你想做什么?https://developers.google.com/speed/pagespeed/module 可能是解决您正在进行的任何操作的好工具? - Rich Bradshaw
我只想要一个函数,可以压缩HTML/CSS/JS的字符串,而不是文件。 - Witch-King
那么我会使用fwrite等函数来写入文件,然后打开它并将其传递到该函数中? - Witch-King
1
我最终使用了JSMin.php文件,感谢您的帮助! - Witch-King
显示剩余4条评论

0
这个对我有效:
$out = file_get_contents(__DIR__ . '/page.html');
$replace = ["\r", "\t", "\n"];
for ($i = 2; $i <= 50; $i++) {
    $replace[] = str_repeat(' ', $i);
}
file_put_contents(__DIR__ . '/page.html', str_replace($replace, '', $out));

更容易使用正则表达式
$out = file_get_contents(__DIR__ . '/page.html');
file_put_contents(__DIR__ . '/output.html', preg_replace("/(\s{2,}|\t|\r|\n)/i",'',$out));

0

谢谢您的回答,但这是针对外部文件而非字符串。 - Witch-King
1
链接已经失效:“看起来你要找的页面不存在。请检查地址或尝试其他页面。” - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接