Frage

Ich benutze PHP.

Ich arbeite an einer Art und Weise automatisch, um gemeinsam alle meine CSS-Dateien in einem. Ich automatisch die CSS-Dateien laden und dann speichert sie in einer größeren, für den Upload.

In meiner lokalen Installation Ich habe einige @import Linien, die entfernt werden muss.

Es sieht wie folgt aus:

@import url('css/reset.css');
@import url('css/grid.css');
@import url('css/default.css');
@import url('css/header.css');
@import url('css/main.css');
@import url('css/sidebar.css');
@import url('css/footer.css');
body { font: normal 0.75em/1.5em Verdana; color: #333; }

Wenn über den Stil innerhalb eines Strings ist, wie kann ich der beste Weg, um die @ import-Linien mit preg_replace oder besser ersetzen? Es wäre schön, keine Leerzeichen Lücke zu lassen.

War es hilfreich?

Lösung

Dies sollte es über regex behandeln:

preg_replace('/\s*@import.*;\s*/iU', '', $text);

Andere Tipps

Sie könnten leicht jede Zeile durchlaufen und dann festzustellen, ob es mit @import beginnt.

$handle = @fopen('/path/to/file.css', 'r');
if ($handle) {
    while (!feof($handle)) {
        $line = fgets($handle, 4096);
        if (strpos($line, '@import') !== false) {
            // @import found, skip over line
            continue;
        }
        echo $line;
    }
    fclose($handle);
}

Oder wenn Sie die Datei in einem Array vorne gespeichert werden sollen:

$lines = file('/path/to/file.css');
foreach ($lines as $num => $line) {
    if (strpos($line, '@import') !== false) {
        // @import found, skip over line
        continue;
    }
}

str_replace ( "@ import", '', $ str);

Es könnte einfacher sein, die @imports zu finden preg_match verwenden, dann ersetzen Sie sie str_replace mit

$str = "<<css data>>";
while (preg_match("/@import\s+url\('([^']+)'\);\s+/", $str, $matches)) {
  $url = $matches[1];
  $text = file_get_contents($url); // or some other way of reading that url
  $str = str_replace($matches[0], $text, $str);
}

Soweit nur Strippen alle @import Zeilen:

preg_replace("/@import[^;]+;\s+/g", "", $str);

Wenn die Arbeit tun ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top