PHPを使用してcssファイルから色を抽出しようとしています。これらの色は次のとおりです。
- 通常の色 (色: #xxxxxx;)
- 背景色 (背景: #xxxxxx; / 背景: ... #xxxxxx ...;)
- 背景のグラデーション (背景画像: 線形グラデーション (上、#xxxxxx、#xxxxxx);
- 色が 3 文字の場合もあります (例: #fff)
# で始まる単語を返すために preg マッチを試しました
preg_match_all('/(?!\b)(#\w+\b)/', $css_text, $matches)
...しかし、DIV ID (#header など) も返します
今後は、コードがカラー コードだけでなく、それが見つかった行番号も含む多次元配列を返すようにしたいと考えています。
助けてください!:)
---------- 編集: 解決した質問 ----------
回答ありがとうございます。皆さんの回答をまとめてみました。正規表現を最小限に抑えたかったので、これは最終的な作業コードとして使用したものです:
$css = file_get_contents("style.css");
$token = strtok($css, "{}");
$css_parts = array();
while ($token !== false) {
$css_parts[] = trim($token);
$token = strtok("{}");
}
$flag = false; $properties = "";
foreach($css_parts as $part) {
if($flag) { $properties .= " ".trim($part); }
$flag = !$flag;
}
$properties = strtoupper(str_replace(array(":",",",";","(",")")," ",$properties));
$colors = array();
preg_match_all('/(?!\b)(#\w+\b)/',$properties,$colors);
$colors = array_unique($colors[0]);
print_r($colors);