php - 在 PHP 中将长十六进制代码转换为短十六进制代码

标签 php css

使用 PHP 将 css 十六进制代码转换为较短的对应代码的最佳方法是什么?只需编写一个 css 压缩脚本,虽然它可能对文件大小有所帮助。

谢谢

最佳答案

在这种情况下,您希望从一种格式(#RRGGBB,每个 channel 有 8 位颜色信息)转换为截然不同的格式(#RGB,只有 4 位颜色信息)每个 channel 的颜色信息)。这只能在两个十六进制数字相同的情况下完成。

你可以尝试像这样简单直接的方法:

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 形式怎么办?

关于php - 在 PHP 中将长十六进制代码转换为短十六进制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12656355/

相关文章:

php - 如何从 ash (bash) 将数据发布到 php

html - 在 IE 中使用媒体查询时 CSS 动画不起作用

css - 在 DIV 内部垂直和水平居中图像, float 为 :left?

jquery - 将鼠标悬停在另一个 <div> 上时更改 <div> 内的图像 <src>

javascript - 悬停时如何增加多行文本的下划线宽度

css - Zurb基金会6 : nested expanded grid with no-padding

php - 服务器端linkedIn API身份验证

php - 从数据透视表中选择所有行

php - while(false !== ($f=readdir($d))){ 的解释

php - 使用 PHPExcel 只读取一个大 Excel 文件的一行