2016-03-19 8 views
-2

Der folgende Code entfernt alle Zeilenumbrüche und Leerzeichen aus einer CSS-Datei. Aber das Problem ist, wenn die CSS-Datei so etwas wie dieses hat:Eine CSS-Datei mit PHP verkleinern

.sample { 
    padding: 0px 2px 1px 4px; 
} 

Ausgang wird sein:

.sample{padding:0px2px1px4px;} 

Ich möchte, dass Zwischenräume (0px 2px 1px 4px).

Hier ist der Code, den ich verwendet habe:

$str=file_get_contents('sample.css'); 

//replace all new lines and spaces 
$str = str_replace("\n", "", $str); 
$str = str_replace(" ", "", $str); 

//write the entire string 
file_put_contents('sample.css', $str); 
+1

Gibt es nicht viele Skripts im Netz, die das schon tun? Warum erfinden Sie das Rad neu? Wählte nur den ersten Google-Eintrag: https://github.com/matthiasmullie/minify – Jeff

+0

@Jeff: Manchmal ist die erste Option nicht die beste Option. Ich habe Marrias Mullie's Minify-Bibliothek und MrClays gleichnamige Bibliothek (https://github.com/mrclay/minify) ausprobiert, und ich bevorzuge letztere. Auch letztere Bibliothek ist viel beliebter. Vergleichen Sie einfach die Anzahl der Beobachter, Sterne und Gabeln beider Bibliotheken! –

Antwort

-1

Wenn Sie die Tabs und Leerzeichen um jede Zeile zu entfernen, aber die Räume innerhalb der Arten zu halten. Sie sollten nur explode() den gesamten Inhalt mit \n als Token-Delimiter und iterieren über jede Zeile und verwenden Sie php's trim() darauf, dann implode() es ohne Trennzeichen.

2

in Ihrem Code die folgende Zeile:

$str = preg_replace("/([0-9]*px(?!;))/", "$1 ", $str); 

einen Raum zu jedem px Zeichenfolge von etwas gefolgt hinzuzufügen, die nicht a ist;

Auf diese Weise Ihren Code durch Hinzufügen von Leerzeichen, wo Sie darauf hingewiesen.

$str=file_get_contents('sample.css'); 

//replace all new lines and spaces 
$str = str_replace("\n", "", $str); 
$str = str_replace(" ", "", $str); 
$str = preg_replace("/([0-9]*px(?!;))/", "$1 ", $str); 

//write the entire string 
file_put_contents('sample.css', $str); 

Sie könnten Verwendung jeder Php Kompressionsbibliothek wie minify die bieten komplette CSS-Komprimierungsoptionen machen.

Ich hoffe, das hilft.

0

Um CSS in PHP zu reduzieren, verwenden Sie am besten Steve ClayMinify library. Es hat keinen Sinn, das Rad neu zu erfinden.

Here ist eine kurze Anleitung zur Installation und Konfiguration der Bibliothek.