#334455 hexを#345に置き換えるPCRE

hex pcre php preg-replace regex

長い16進数の色( #334455)を短い色(#345)に置き換える関数を書いています。 これは、16進数の各色が17の倍数の場合(各16進数ペアが同じ文字で構成されている場合)にのみ実行できます。

例えば #EEFFCC`は#EFC`に置き換えられますが、# `EDFFCC`は何にも置き換えられません。

私はこれをカスタムコールバックなしで1回の `preg_replace()`呼び出しで行いたいです。

私はすでにこれを試しました:

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

しかし、それはすべてのヘクスを短くします。各ペアの同じ文字を持つヘクスだけではありません。 同じ文字のペアだけを一致させる方法がわかりません。

助けてください。

  1  0


ベストアンサー

これを試してください – あなたはただマッチ自体で backreferencesを使う必要があります

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

4


タイトルとURLをコピーしました