2012-09-29 84 views

回答

0

在這種情況下,你正在尋找從一種格式轉換(#RRGGBB,與每個通道的顏色信息8位)到明顯不同格式(#RGB,只有4位每個通道的顏色信息)。這隻能在兩個十六進制數字相同的情況下完成。

你可以嘗試一些簡單明瞭的是這樣的:

function compress_css_colour($original) { 
    if ( $original[1] == $original[2] 
     && $original[3] == $original[4] 
     && $original[5] == $original[6]) { 
     return "#" . $original[1] . $original[3] . $original[5]; 
    } else return $original; 
} 

echo compress_css_colour("#aabbcc"); 
// prints "#abc" 

肯定有更優雅的解決方案,雖然這其中將在一般情況下工作。您還需要添加更強大的功能 - 如果原始CSS顏色格式不正確,或者它的格式爲#RRGGBBAA,該怎麼辦?

+0

謝謝,唯一的問題是,我需要單獨傳遞十六進制代碼。我需要能夠通過整個CSS文件解析它。 – Scottymeuk

+1

解析CSS是一個*更大,更復雜的任務。如果你只是想用PHP壓縮你的CSS,那麼已經有很多項目可以這樣做了。看看https://github.com/codenothing/css-compressor。 –

相關問題