Слияние CSS с PHP

Я нашел это на веб-сайте,

css_loader.php

<?php // First of all send css header header("Content-type: text/css"); // Array of css files $css = array( 'main.css', 'menu.css', 'content.css' ); // Loop the css Array foreach ($css as $css_file) { // Load the content of the css file $css_content = file_get_contents($css_file); // print the css content echo $css_content; } ?> 

Добавить CSS на страницу

 <link href="css_loader.php" rel="stylesheet" type="text/css" /> 

Это выглядит очень логично, но когда я применил его к своей странице, он не работал.

возможно ли объединить файлы CSS таким образом?

У вас есть ошибка в коде, вот правильный код:

 <?php // First of all send css header header("Content-type: text/css"); // Array of css files $css = array( 'main.css', 'menu.css', 'content.css' ); // Prevent a notice $css_content = ''; // Loop the css Array foreach ($css as $css_file) { // Load the content of the css file $css_content .= file_get_contents($css_file); } // print the css content echo $css_content; ?> 

И я надеюсь, что файлы находятся в одной папке. Возможно, вы должны использовать __DIR__ или dirname(__FILE__) чтобы получить относительный путь к вашим файлам.

Стоуни показал вам свою ошибку …. теперь для более совершенной версии

  header('Content-type: text/css'); ob_start("compress"); function compress($buffer) { /* remove comments */ $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); /* remove tabs, spaces, newlines, etc. */ $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); return $buffer; } /* your css files */ include('main.css'); include('menu.css'); include('content.css'); ob_end_flush(); в  header('Content-type: text/css'); ob_start("compress"); function compress($buffer) { /* remove comments */ $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); /* remove tabs, spaces, newlines, etc. */ $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); return $buffer; } /* your css files */ include('main.css'); include('menu.css'); include('content.css'); ob_end_flush(); в  header('Content-type: text/css'); ob_start("compress"); function compress($buffer) { /* remove comments */ $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); /* remove tabs, spaces, newlines, etc. */ $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); return $buffer; } /* your css files */ include('main.css'); include('menu.css'); include('content.css'); ob_end_flush(); в  header('Content-type: text/css'); ob_start("compress"); function compress($buffer) { /* remove comments */ $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); /* remove tabs, spaces, newlines, etc. */ $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); return $buffer; } /* your css files */ include('main.css'); include('menu.css'); include('content.css'); ob_end_flush(); 
 <?php // Array of css files $css = array( 'first.css', 'second.css' ); $mergeCSS = ""; // Loop the css Array foreach ($cssas $css_file) { // Load the content of the css file $mergeCSS.= file_get_contents($css_file); } // Remove comments also applicable in javascript $mergeCSS= preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $mergeCSS); // Remove space after colons $mergeCSS= str_replace(': ', ':', $mergeCSS); // Remove whitespace $mergeCSS= str_replace(array("\n", "\t", ' ', ' ', ' '), '', $mergeCSS); //Generate Etag $genEtag = md5_file($_SERVER['SCRIPT_FILENAME']); // call the browser that support gzip, deflate or none at all, if the browser doest support compression this function will automatically return to FALSE ob_start('ob_gzhandler'); // call the generated etag header("Etag: ".$genEtag); // Same as the cache-control and this is optional header("Pragma: public"); // Enable caching header("Cache-Control: public "); // Expire in one day header('Expires: ' . gmdate('D, d MYH:i:s', time() + 86400 ) . ' GMT'); // Set the correct MIME type, because Apache won't set it for us header("Content-type: text/javascript"); // Set accept-encoding header('Vary: Accept-Encoding'); // Write everything out echo($mergeCSS); ?> 

Этот код также совместим для слияния javascript

Я написал этот класс для таких потребностей, он может отображать вывод и сжимать его, позже я могу добавить файл записи конечных результатов, ссылку здесь

эй, вы проверили, добавляет ли ваш сервер несколько строк к вашему коду (например, код аналитики). если это так, вы должны добавить правило в .htaccess, которое останавливает сервер для добавления строк в ваш код. это можно сделать, добавив это в .htaccess – "php_value auto_append_file none" без кавычек, конечно. надеюсь, это поможет