세이박스

PHP str_pad() 자릿수 맞혀 수정하기

웹프로그램
변수값에서 자릿수를 맞혀줘야 할때가 종종 있다.
예를 들면 날짜 데이터가 2009-04-10 이런식으로 처리되어야 하는데
넘어온값이 "2009-4-10" 이렇게 넘어 오는 경우 예전에
if($day<10) $day = "0".$day;
이렇게 변경 해주곤 했었다.
하지만 이보다 자릿수가 많은경우 매우 복잡해진다.
예를 들어 00000210 으로 맞혀 줘야 한다면 OTL 헉...

하지만 str_pad() 함수를 이용하면 간단하다.

Description

string str_pad ( string $input , int $pad_length [, string $pad_string= " " [, int $pad_type= STR_PAD_RIGHT ]] )

This functions returns the input string padded on the left, the right, or both sides to the specified padding length. If the optional argument pad_string is not supplied, the input is padded with spaces, otherwise it is padded with characters from pad_string up to the limit.


위 내용은 php.net에서 설명하는 내용 입니다.
str_pad(검사할값,자릿수,변경할값,왼쪽또는오른쪽기준);

예를 들어보겠다.
$test = "123" 을 자릿수 10자리로 한다면

echo str_pad($test,10,"0",STR_PAD_LEFT);

결과는 "0000000123" 와같이 출력이 됩니다.

그럼, 잘활용 하세요!

[PHP] IP4 대역 . 제거 및 자릿수 변경하기

웹프로그램




국내 IP대역만 허용하기 위한 방법에 대한 앞 게시글을 보신분이라면 IP를 일괄 적으로 편하게 수정 했으면 하는 분들 있을것 같아 제가 변경 하는데 사용한 소스 올립니다.

일단 엑셀파일에서 시작IP 와 마지막 IP를 에디터플러스로 불러와서


변경 : (줄의시작) ^ -> "
변경 : (텝영역복사) 텝 -> _
변경 : (줄의끝) $ -> ",
변경 : (개행) \n -> 제거

위와 같이 4단계를 거치면
"202.6.95.0_202.6.95.255","202.14.103.0_202.14.103.255","202.14.165.0_202.14.165.255",....
처럼 만들어 진다.

이 값을 아래 소스에 넣어서 돌리면 각 IP 자릿수를 맞도록 수정 해줍니다.
아래과정은 소스상에 넣어두면 매번 번거롭게 변환 과정 안거쳐도 되겠지만
그래도 자주처리하는 작업이 아니므로 웹부하를 들어줄겸 그냥 수작업으로 해주는게 좋을듯 합니다.

<?
//2009.4.10 받아온 IP대역
$ipgroup = array("202.6.95.0_202.6.95.255","202.14.103.0_202.14.103.255","202.14.165.0_202.14.165.255",......);

for($i=0;$i<count($ipgroup);$i++) {
 $tmpip = explode("_",$ipgroup[$i]);

 $userip = $tmpip[0];
 $tmpuserip = explode(".",$userip);
 $userip = str_pad((int)$tmpuserip[0],3,"0",STR_PAD_LEFT).str_pad((int)$tmpuserip[1],3,"0",STR_PAD_LEFT).str_pad((int)$tmpuserip[2],3,"0",STR_PAD_LEFT).str_pad((int)$tmpuserip[3],3,"0",STR_PAD_LEFT);
 $ipsave .= "\"".$userip."_";
 
 $userip = $tmpip[1];
 $tmpuserip = explode(".",$userip);
 $userip = str_pad((int)$tmpuserip[0],3,"0",STR_PAD_LEFT).str_pad((int)$tmpuserip[1],3,"0",STR_PAD_LEFT).str_pad((int)$tmpuserip[2],3,"0",STR_PAD_LEFT).str_pad((int)$tmpuserip[3],3,"0",STR_PAD_LEFT);
 $ipsave .= $userip."\",";
}

echo $ipsave;
?>