我正在混合使用HTML&带有PHP变量的CSS,这样我只需一个配置文件即可管理很多设置。这一切都运行正常,但我现在正在尝试合并和缩小CSS。这会导致问题。
变量不会回显到压缩表中,因为PHP脚本不会被执行。这是因为file_get_contents()将内容转换为字符串。
是否可以先以某种方式执行文件,然后获取其内容?或者以另一种方式抓住他们的内容,这种方式仍然会被执行?
的config.php
$priColor = '#000';
基stylesheet.php
/* CSS header defined */
/* config.php included */
body{
background-color: <?= $priColor ?>;
}
特异性stylesheet.php
/* CSS header defined */
/* config.php included */
.site-specific-element{
background-color: <?= $priColor ?>;
}
精缩-stylesheets.php
// Set files that must be minified
$cssFiles = array(
"base-styleseet.php",
"specific-stylesheet.php"
);
// Get those files
$buffer = "";
foreach ($cssFiles as $cssFile) {
$buffer .= file_get_contents($cssFile);
}
// Minify and echo them
minifyCSS($buffer);
echo $buffer;
的index.php
<link rel="stylesheet" href="minified-stylesheets.php">
答案 0 :(得分:4)
我认为您需要做的是将文件包含在PHP缓冲区中,然后缩小缓冲区
// Set files that must be minified
$cssFiles = array(
"base-styleseet.php",
“specific-stylesheet.php"
);
// Get those files
ob_start();
foreach ($cssFiles as $cssFile) {
include($cssFile);
}
// Minify and echo them
$css = minifyCSS(ob_get_clean());
echo $css;
答案 1 :(得分:1)
file_get_contents()
将逐字读取文件的内容并将内容放入字符串中。您需要使用的是include()
。这将解析文件的内容。
答案 2 :(得分:1)
您已熟悉ob_start()
方法。
但我会展示一个更好的选择(并且更快):
您的主文件:
$cssFiles = array(
"base-styleseet.php",
"specific-stylesheet.php"
);
$buffer = "";
foreach ($cssFiles as $cssFile) {
$buffer .= include($cssFile);
}
minifyCSS($buffer);
echo $buffer;
嗯,这里没什么。刚刚添加include()
......
但除非你喜欢这样,否则它不会按预期工作:
使用基本样式表作为示例:
<?php
//remember to escape the { chars
return <<<CSS
/* CSS header defined */
/* config.php included */
body\{
background-color: $priColor;
/* with an array */
background-image: url('{$images['print']}');
/* or */
background-image: url('$images[print]');
\}
CSS;
*忽略破解的语法高亮
你已经完成了。
不再讨厌ob_start()
!!!
此外,CSS评论使用/* */
语法,//
将被评估为无效的CSS选择器。