php script na minimalizaci CSS
2 příspěvky
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Re: CSS - hromadná deklarace Autor: R.U.R. (jsrosa.wz.cz) Datum: 31. 07. 2008 11:32 No třeba já to prostě napíšu rovnou do jednoho CSS souboru ;-) Ale asi by bylo zajímavý mít na webu skript co bude komprimovat css - jako že odstraní white chars a komentáře a tak... Možná na to něco existuje, jestli ne, tak to rád zkusim napsat :-) Toho by jsem se chytl, mohli by jsme takovy propracovany udelat a vychytat v nem chyby. google.com php css compression <?php 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; } ?> prvni replacuje komentare, druhy rusi vsechny nove radky, tab a mezery. Co jeste jeste pod stromecek chces vymyslet? Snad jen reg. vyraz, ktery - 6ti mistny kod barvy zkontroluje, zda by se nedal zapsat jako 3 mistny - zkusi zapsat opakovane jednotky 0px 0px 0px 0px jako 1x0 nebo 2x0 a odstranit px, pokud nejsou nutne - pokusi se odstranit strednik pred konecnou zavorkou Mno, ale problem nastava v okamziku, kdy tam pouzijes JS, typu expresion. A problem zmineneho php je napr v tom, ze odstranuje, co nema a neodstranuje, co ma :) $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', komentare jsem nekontroloval. dalsi clanek na jina slova php minimalize css http://ajaxian.com/archives/how-to-minimize-your-javascript-and-css-files-for-faster-page-loads z minify // odstraneni mezer vsude mozne i nemozne $css = preg_replace('/>\\/\\*\\s*\\*\\//', '>/*keep*/', $css); $css = preg_replace('/\\/\\*\\s*\\*\\/\\s*:/', '/*keep*/:', $css); $css = preg_replace('/:\\s*\\/\\*\\s*\\*\\//', ':/*keep*/', $css); $css = preg_replace_callback('/\\s*\\/\\*([\\s\\S]*?)\\*\\/\\s*/' ,array('Minify_CSS', '_commentCB'), $css); $css = preg_replace('/\s+/', ' ', $css); $css = str_replace('/*keep*/', '/**/', $css); $css = preg_replace('/\\s*{\\s*/', '{', $css); $css = preg_replace('/;?\\s*}\\s*/', '}', $css); $css = preg_replace('/\\s*;\\s*/', ';', $css); $css = preg_replace('/url\\([\\s]*([^\\)]+?)[\\s]*\\)/', 'url($1)', $css); $css = preg_replace('/\\s*([{;])\\s*([\\w\\-]+)\\s*:\\s*\\b/', '$1$2:', $css); $css = preg_replace_callback('/(?:\\s*[^~>+,\\s]+\\s*[,>+~])+\\s*[^~>+,\\s]+{/' ,array('Minify_CSS', '_selectorsCB'), $css); // komprese hex barev $css = preg_replace('/([^=])#([a-f\\d])\\2([a-f\\d])\\3([a-f\\d])\\4([\\s;\\}])/i' , '$1#$2$3$4$5', $css); pro R.U.R. (jsrosa.wz.cz) klidne se do tomo muzes pustit. Ti tam najdu vsechny chyby. Vsechny JS a dalsi kraviny bych do toho nezahrnoval. Pouze bezny CSS. Vse, co neznas, bych z tama smazal. Cili script by mel fungovat asi na principu Tokenizovani a zvyraznovani syntaxe, ze si to najde prislusne povolene vyrazy. Slusny zvyraznovac jsem nasel pro JS jako Highlight.js , treba by se to dalo pro tvuj pripad pouzit
-
Doufám že to pak budeš cachovat a pak odkazovat na něj! Pokud ne, tak to ztrácí význam, protože serveru udělá větší zátěž parsovat kód než posílat nezkomprimovaný CSS/JS..