2017-01-08 9 views
1

cssファイルの内容をPHP文字列にロードしようとしています。これは、CSSファイルが@importを使用するとき以外は、素晴らしい作品:PHPファイルのget_contents @importを含むCSSファイルの内容

のstyle.css

@import url('normalize.css'); 
@import url('main.css'); 
@import url('colors.css'); 

$contents = @file_get_contents('style.css'); 

echo $contents; // Obviously doesn't include the css in the imported files 

これは明らかにstyle.cssの正確な内容を返しています。これらのファイルをインポートするにはどうしたらいいですか?

+0

がでCSSパーサを書く後 は、最初に@importとのコメントを追加PHP ---または誰もそのための時間がないので、regexを使って、 '^ @ import \ s \ + url \( ''のすべての出現箇所を見つけ、CSSと同じ順序でそれらのファイルをインクルードしてください。これはhですこれらのスタイルをブラウザとは異なる順序で連結してしまう可能性があるため、ひどく欠陥があります。 – cmt

答えて

0

これはトリッキーが、それを行うための簡単な方法です:すべての輸入

css_part

@import url('normalize.css'); 
@import url('main.css'); 
@import url('colors.css'); 
/*@import*/ 
.class{} 
.class{} 

php_part

$contents = @file_get_contents('style.css'); 
$wordToLookFor = "@import"; 
$contentToAdd = ""; 
$imports = explode($wordToLookFor,$contents); 
for($i=0; $i < sizeof($imports) - 1 ; $i++){ 
    $tmp = str_replace(array("url(",");","/*"),"",$imports[$i]); 
    $contentToAdd .= @file_get_contents($tmp); 
} 
$contents = $contentsToAdd . $contents; 
echo $contents; // should include other files in the same order now 
+0

これはここに直接書いてあるので、いくつかのエラーがあるかもしれません。それを試して変更してもうまくいくはずです;) –

関連する問題