我正在编写一个函数,将长十六进制编码颜色(#334455
)替换为短颜色( #345
)。仅当十六进制中的每种颜色都是 17 的倍数(每个十六进制对由相同的字符组成)时,才能做到这一点。
eg#EEFFCC
替换为#EFC
,但 #EDFFCC
不替换为任何内容。
我想通过单次preg_replace()
调用来完成此操作,而无需任何自定义回调。
我已经尝试过这个:
$hex = preg_replace('/([0-f]){2}([0-f]){2}([0-f]){2}/i', '\1\2\3', $hex);
但这会缩短所有十六进制,而不仅仅是每对中具有相同字符的十六进制。我不知道如何只匹配相同字符的对。
请帮忙。