PHPにて、#fffを#ffffffに広げたり逆に短縮したいのですが、現在やっている方法のほかに良い方法はありますでしょうか。
現在は
php
1// 展開 2 3$color = strtolower($color); 4if(preg_match('/^#[a-f0-9]{3}$/', $color)) { 5 6 $result = '#'.substr($color, 1, 1).substr($color, 1, 1).substr($color, 2, 1).substr($color, 2, 1).substr($color, 3, 1).substr($color, 3, 1); 7 8} else { 9 $result = $color; 10} 11 12// 短縮 13$color = strtolower($color); 14if(preg_match('/^#[a-f0-9]{6}$/', $color)) { 15 16 if( 17 substr($color, 1, 1) === substr($color, 2, 1) && 18 substr($color, 3, 1) === substr($color, 4, 1) && 19 substr($color, 5, 1) === substr($color, 6, 1) 20 ) { 21 $result = '#'.substr($color, 1, 1).substr($color, 3, 1).substr($color, 5, 1); 22 } else { 23 $result = $color; 24 } 25 26} else { 27 $result = $color; 28}
という感じでsubstrでごり押してるのですが、コード的に少々気持ち悪く感じます。
このコードが最も速いコードなら良いのですが、ほかに良い方法などありますでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/09 08:41
2020/01/09 08:51