짧은 16 진수 색상을 긴 16 진수 색상으로 사용하는 기능을 만들려고합니다.PHP : 약식 16 진수 색상을 일반 글꼴로 변환
예를 들어 누군가 "f60"을 제출하면 "ff6600"으로 변환됩니다. 나는 각 숫자를 그 자체로 반복 할 필요가 있음을 이해한다. 그러나 이것을하는 가장 효율적인 방법은 무엇인가?
감사합니다.
짧은 16 진수 색상을 긴 16 진수 색상으로 사용하는 기능을 만들려고합니다.PHP : 약식 16 진수 색상을 일반 글꼴로 변환
예를 들어 누군가 "f60"을 제출하면 "ff6600"으로 변환됩니다. 나는 각 숫자를 그 자체로 반복 할 필요가 있음을 이해한다. 그러나 이것을하는 가장 효율적인 방법은 무엇인가?
감사합니다.
이렇게하면됩니다. 그러나 정확한 strlen
비교로 인해 문자열 앞에 #
이 추가되지 않도록해야합니다.
// Done backwards to avoid destructive overwriting
// Example: f60 -> ff6600
if (strlen($color) == 3) {
$color[5] = $color[2]; // f60##0
$color[4] = $color[2]; // f60#00
$color[3] = $color[1]; // f60600
$color[2] = $color[1]; // f66600
$color[1] = $color[0]; // ff6600
}
+1 괜찮아요 ... 가장 문제입니다. – mynameiscoffey
환상적! $ variable [lenght]로 문자열의 특성을 잡을 수 있는지 몰랐습니다. 나는 이것으로 많은 것을 배웠다. 고맙습니다! – floatleft
$fullColor = $color[0].$color[0].$color[1].$color[1].$color[2].$color[2];
당신은 배열로 문자열의 문자에 액세스 할 수 있습니다.
좋은 오래된 정규 표현식에를 놓칠 수없는이 질문 : D
$color = preg_replace('/#([\da-f])([\da-f])([\da-f])/i', '#\1\1\2\2\3\3', $color);
이것은 처리 나 가독성면에서 거의 효과적이지 않습니다. 나는 간단한 해결책이 충분할 때 정규 표현식을 피한다고 말한다 : P –
나는 그것을 말하지 않았다.) 모든 정규 표현식 사용자가 만족할 수 있도록 제공되었다. – knittl
아니지만 최선의 해결책 ...하지만, 이들과 다른 당신이 문자열의 모든 종류를 복제 할 수 있습니다 모든 길이뿐만 아니라 3과 진수 색상
<?php
$double='';
for($i=0;$i<strlen($str);$i++){
$double.=$str[$i].$str[$i];
}
?>
또는
시각적 인 문서 -<?php
$str="FCD";
$split=str_split($str);
$str='';
foreach($split as $char) $str.=$char.$char;
echo $str;
?>
또한 정규식 등을 사용할 수 있습니다 ...이 경우에 생각
str_split 호출과 foreach 루프 때문에 가장 효율적인 것은 아니다. 하지만 그것도 작동합니다 ... – Macmade
는 효율 그냥 간단한 해결책으로 가서 –