PCRE # 345 ile # 334455 onaltılık yerine

1 Cevap php

Ben uzun altıgen kodlu rengi (#334455) kısa bir biri ile yerine bir fonksiyon yazıyorum (#345). Onaltılık her renk 17 çoklu (her onaltılık çifti aynı karakterden oluşur) olduğunda bu sadece yapılabilir.

örneğin #EEFFCC #EFC ile değiştirilir, ancak # EDFFCC şey ile değiştirilmemiştir.

Ben herhangi bir özel geriçağırımlarının olmadan tek preg_replace() çağrısı ile yapmak istiyorum.

Ben zaten bu denedim:

$hex = preg_replace('/([0-f]){2}([0-f]){2}([0-f]){2}/i', '\1\2\3', $hex);

Ama hepsi onaltılarını değil, her çift aynı karakterlerle onaltılarını kısaltır. Ben aynı karakterin sadece çift maç için nasıl anlamaya olamaz.

Lütfen yardım edin.

1 Cevap

Bu deneyin - sadece maçında kendisi backreferences kullanmanız gerekir

$hex = preg_replace('/([0-f])\1([0-f])\2([0-f])\3/i', '\1\2\3', $hex);