Я пишу функцию, которая заменяет длинный шестнадцатеричный цвет (#334455
) на короткий (#345
). Это может быть сделано только тогда, когда каждый цвет в шестнадцатеричном формате кратен 17 (каждая шестнадцатеричная пара состоит из одинаковых символов).
например. #EEFFCC
заменяется на #EFC
, но # EDFFCC
не заменяется ничем.
Я хочу сделать это с помощью одного preg_replace()
вызова без каких-либо пользовательских обратных вызовов.
Я уже пробовал это:
$hex = preg_replace('/([0-f]){2}([0-f]){2}([0-f]){2}/i', '\1\2\3', $hex);
Но это сокращает все гексы, а не только гексы с одинаковыми символами в каждой паре. Я не могу понять, как сопоставить только пары одного и того же персонажа.
Пожалуйста, помогите.