| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

24-10-2011, 10:54
|
|
litterauspirna
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 353
|
|
CSS und JS Files Minifizieren Reguläre Ausdrücke
Hallo,
ich weiß nicht ob ich und die Regexes noch gute Freunde werden :-).
Ich habe ein Problem aus einem CSS File alle WhiteSpaces zu entfernen die von bestimmten Zeichen gefolgt sind.
Hier mein Regex
PHP-Code:
$pattern = "~\s+(\(|\)|\[|\]|\{|\}|\:|\;)~";
Mir werden nur schließende } entfernt. Ich will aber nur die Leerzeichen weg haben und nicht die Zeichen. Die Zeichen in dem Unterausdruck sollen nur als Bedingung gelten für das entfernen von Whitespaces.
Kann mir eventuell jemand helfen? Vielen Dank der Litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
|

24-10-2011, 13:40
|
 |
mermshaus
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 165
|
|
|

24-10-2011, 13:48
|
|
litterauspirna
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 353
|
|
Das funktioniert nicht.
Mal meine CSS
Code:
/* gültig fü alles */
*{
margin:0px;
padding:0px;
outline:none;
}
/* formatierung hauptcontainer */
div#application {
width: 1000px;
height: 500px;
border: 1px solid #000;
}
/*
*
* ein großer block kommentar
* *sdfsdfs*
*
*/
div#navi {
width: 200px;
border: 1px solid #000;
margin: 5px 5px 5px 5px;
}
So Blockkommentare habe ich filtern können, \n oder \r und \t auch.
Aber das mit den Leerzeichen leider noch nicht.
PHP-Code:
$str = preg_replace("~\s+(?=[()[\]{}:;])~", '', $str);
echo $str;
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
|

24-10-2011, 14:27
|
 |
mermshaus
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 165
|
|
Wie definierst du denn „funktioniert“?
Der Ausdruck betrifft in deinem Beispiel nun mal lediglich acht Stellen.
PHP-Code:
<?php
$str = <<<EOT
/* gültig fü alles */
*{
margin:0px;
padding:0px;
outline:none;
}
/* formatierung hauptcontainer */
div#application {
width: 1000px;
height: 500px;
border: 1px solid #000;
}
/*
*
* ein großer block kommentar
* *sdfsdfs*
*
*/
div#navi {
width: 200px;
border: 1px solid #000;
margin: 5px 5px 5px 5px;
}
EOT;
$minified = preg_replace("~\s+(?=[()[\]{}:;])~", '', $str);
echo "Minified output:\n\n";
echo $minified;
echo "\n\n";
$originalSize = strlen($str);
$minifiedSize = strlen($minified);
echo 'Original size : ', $originalSize, " B\n";
echo 'Minified length : ', $minifiedSize, " B\n";
echo 'Compression rate : ', round(100 - ($minifiedSize / $originalSize) * 100), " %\n";
|

24-10-2011, 14:37
|
|
litterauspirna
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 353
|
|
Na er greift nur bei den } Klammern im CSS.
Es sollen aber die Whitespaces hinter jedem : ; { ( [ verschwinden und vor jedem } ) ].
Regexes sind leider nicht meine wesentliche Stärke.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
|

24-10-2011, 15:16
|
 |
mermshaus
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 165
|
|
Na dann formulier das in der Frage bitte auch so.
Code:
(?<=[)\]};])\s+|\s+(?=[([{])
Heißt: „Leerzeichen, vor denen )]}; steht“ oder „Leerzeichen, hinter denen ([{ steht“
|

24-10-2011, 18:43
|
|
litterauspirna
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 353
|
|
Das funktioniert super, hab vielen Dank.
Das sieht so einfach aus, aber für mich sind diese Regexes teilweise ne riesen Hürde.
EDIT:
Beim genaueren hinsehen fiel mir auf das doch nicht alles entfernt wurde was weg musste und so habe ich das noch so erweitert.
PHP-Code:
$str = preg_replace("~(?<=[)\]}{;:])\s+|\s+(?=[([{}])~", '', $str);
Und nun ist wirklich alles weg was weg muss um das CSS nur auf relevanten Code zu reduzieren.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
Geändert von litterauspirna (24-10-2011 um 18:51 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|