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