우편번호 숫자 -> 문자열 치환

우편번호 숫자 -> 문자열 치환

QA

우편번호 숫자 -> 문자열 치환

본문

우편번호를 3자리 - 4자리 끊어서 받아와서

$member['mb_zip1'], $member['mb_zip2'] 로 불러오게끔 수정을 했는데...

 

앞에 0으로 시작하면 0은 제외가 되는 이슈가 생겨서

 

숫자를 문자열로 치환하는 방법을 검색 후 수정해봤는데... 적용이 되질 않아 문의 남겨봅니다ㅠㅠㅠ

 

우편번호 검색기능은 제거하고 직접 입력해서 데이터를 받는데

 

회원가입작성에서 9230995 라고 우편번호에 입력을 받으면

 

923995 로 출력이 됩니다..;;

 

db 에 저장된 값도 923995 로 저장되는걸 보니 애초에 문자열로 저장을 해줘야 할거 같아서

 

register_form_update 페이지에서 수정해봤는데 적용이 안되고있습니다ㅠㅠㅠ

 


$mb_zip1        = isset($_POST['mb_zip'])           ? substr(trim($_POST['mb_zip']), 0, 3) : "";
$mb_zip2        = isset($_POST['mb_zip'])           ? substr(trim($_POST['mb_zip']), 4)    : "";

 

strval() 로 문자열로 변환 방법도 써보고

홑따옴표를 데이터 양끝에 넣어서 문자열로 만들어 사용하라는 글도 있어서 그것도 해봤는데...

 

홑따옴표 사용시 홑따옴표까지도 문자열로 인식이 되어 이상하게 출력되는건지는 모르겠지만...

 

뒤 4자리가 0995 로 출력은 되는데 앞 3자리에서 마지막 자리수가 짤립니다...;;

 


// output 923995
$mb_zip1        = isset($_POST['mb_zip'])           ? '\''.substr(trim($_POST['mb_zip']), 0, 3).'\'' : "";
$mb_zip2        = isset($_POST['mb_zip'])           ? '\''.substr(trim($_POST['mb_zip']), 4).'\''    : "";
 
// output 920995
$mb_zip1        = isset($_POST['mb_zip'])           ? substr(trim('\''.$_POST['mb_zip'].'\''), 0, 3) : "";
$mb_zip2        = isset($_POST['mb_zip'])           ? substr(trim('\''.$_POST['mb_zip'].'\''), 4)    : "";

이 질문에 댓글 쓰기 :

답변 2

우편번호가 무조건 7자리로 넘어오나요? 그럼 아래처럼 해보시고, mb_zip 데이터형식이char(3)일텐데요. 이것도 char(4)로 바꾸셨나요?

$mb_zip1        = isset($_POST['mb_zip'])           ? substr(trim($_POST['mb_zip']), 0,3) : "";
$mb_zip2        = isset($_POST['mb_zip'])           ? substr(trim($_POST['mb_zip']), -4)    : "";

넵! mysql 에서 mb_zip1 은 char(3) mb_zip2 는 char(4) 로 바꿔준 상태에서 안되고 있던거라....

오... 출력이 잘됩니다..ㅠㅠㅠ 혹시 4 와 -4 의 차이를 알수 있을까요...??

4는 앞에 3자리는 잘라내고 4번째 자리부터 쭉 뽑아내는거고,
-4는 뒤에서 부터 4자리만 잘라내서 뽑아오는거로 알고 있는데...

거꾸로 했을때는 0까지 출력되는 이유를 아시나요...??ㅠㅠㅠㅠ

-4를 3으로 바꿔보니 동일하게 0까지 출력이 되네요...

4로 되어있어서 말씀하신거 처럼 5번째 자리수부터 출력이 돼서 995가 출력이 된거였나봅니다...;;

제가 substr 에 대해 제대로 이해를 못하고 있었네요;;


$mb_zip2        = isset($_POST['mb_zip'])           ? substr(trim($_POST['mb_zip']), 3)    : "";


이렇게 바꿔주니... 잘나오네요... 감사합니다!!ㅠㅠㅠ

디비의 구조를 확인해 보시는게 좋을거 같습니다.

디비가 int형인경우 앞의 0이 빠지는걸지도 모르겠네요

int라면 char나 varchar를 이용해보세요

db의 자료형(?)은 건드리지 않고 자리수라고 하나요..?? 기존에 char(자리수) 이렇게 되어있는거에서 자리수만 3, 4로 바꿔준 상태였습니다ㅠㅠㅠ

위에 님 답변처럼 뒤 4자리수 저장되는 $mb_zip2 에서 -4를 넣으니 출력은 잘 되고 있습니다...

해결은 했지만 원인이 궁금해지네요;; 4와 -4 차이인데... 뒤에서부터 자르는건 0이 출력된다는게...

답변을 작성하시기 전에 로그인 해주세요.
전체 2

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT