@ Ithalat ve \ n arasındaki metni değiştirin

4 Cevap php

Ben PHP kullanabilirsiniz.

Ben otomatik birine birlikte tüm CSS dosyalarını koymak için bir yol üzerinde çalışıyorum. Ben otomatik olarak yükleme için, CSS dosyaları yüklemek ve daha sonra daha büyük bir birine kaydeder.

Benim yerel yükleme ben kaldırılması gerekiyor bazı @ import hatları var.

Bu şuna benzer:

@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; }

Yukarıda tarzı bir dize içinde ise, nasıl en iyi yolu preg_replace ya da daha iyi @ import-hatları değiştiririm? Bu bir boşluk boşluk bırakmayın güzel olurdu.

4 Cevap

Bu regex yoluyla ele almalıdır:

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

Kolayca her hat üzerinde yineleme ve daha sonra @ ithalat ile başlar olmadığını belirlemek olabilir.

$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);
}

Yoksa ön bir dizi dosya saklamak istiyorsanız:

$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);

Bu preg_match kullanarak @ ithalatını bulmak daha kolay olabilir, sonra str_replace kullanarak onları değiştirin

$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);
}

Bildiğim kadarıyla sadece tüm @ import satırları sıyırma:

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

Iş yapmalıyım ...