전화번호 하이픈 처리 질문입니다.

전화번호 하이픈 처리 질문입니다.

QA

전화번호 하이픈 처리 질문입니다.

본문

레벨 오단계일경우에만

****처리된것을 보이게하기위해

마르스컴퍼니님 도움으로


        <?php

        for ($i=0; $i<count($list); $i++) {

       

if ($list[$i]['wr_6']) { // 전화번호 필드에 값이 있으면

if ($member['mb_level'] == 5) // 회원 레벨이 5 이면

$hp = $list[$i]['wr_6'];

else // 회원 레벨 5가 아니거나, 비회원이라면

$hp = substr($list[$i]['wr_6'], 0, -4) . "****";

$hp_hyphen = preg_replace("/(0(?:2|[0-9]{2}))([0-9]+)([0-9]{4}$)/", "\\1-\\2-\\3", $hp); // 하이픈 정규식 처리


}


이렇게 소스 수정을 해서 레벨 5단계회원경우에만 ****처리ㅏ된것을 볼수있게 수정하였습니다

그런데 하이픈처리가 레벨별 상관없이 다 먹지않고

오단계일때만 하이픈처리가 먹네요


전체레벨 모두 하이픈은 먹되

5단계에서만 ****처리된것을 보이게 하고싶은데요

저기서 조금만 수정하면될것같은데

수정이 어렵네요 도와주세요~!



이 질문에 댓글 쓰기 :

답변 5

<?php

for ($i=0; $i<count($list); $i++) {

     if ($list[$i]['wr_6']) { // 전화번호 필드에 값이 있으면

        $hp = preg_replace("/(0(?:2|[0-9]{2}))([0-9]+)([0-9]{4}$)/", "\\1-\\2-\\3", $list[$i]['wr_6']); // 하이픈 정규식 처리

if ($member['mb_level'] != 5)  $hp = substr($hp,0, -4) . "****";

     }

 

이렇게 하시면 원하시는 값을 얻으실수 있을듯 합니다.

5단계가 아닐때 로직순서상 **** 로 먼저 바꿨고, 하이픈 처리는 그 뒤에 하는것인데

정규식에서 ****이 아닌, 숫자일때만 하이픈이 적용되도록 하고있기 때문입니다.

레벨 관계 없이 하이픈 처리를 먼저 하시면 됩니다.


$hp = preg_replace("/(0(?:2|[0-9]{2}))([0-9]+)([0-9]{4}$)/", "\\1-\\2-\\3", $list[$i]['wr_6']);

if ($member['mb_level'] == 5) // 회원 레벨이 5 이면

$hp_hyphen = $hp;

else // 회원 레벨 5가 아니거나, 비회원이라면

$hp_hyphen = substr($hp, 0, -4) . "****";



$hp_hyphen = preg_replace("/(0(?:2|[0-9]{2}))([0-9\*]+)([0-9]{4}$)/", "\\1-\\2-\\3", $hp); // 하이픈 정규식 처리 

$list[$i]['wr_6'] = "공일공-1234-5678";

$member['mb_level'] = 1;


$hp = preg_replace("/(0(?:2|[0-9]{2}))([0-9]+)([0-9]{4}$)/", "\\1-\\2-\\3", $list[$i]['wr_6']);

if ($member['mb_level'] == 5) // 회원 레벨이 5 이면

$hp_hyphen = $hp;

else // 회원 레벨 5가 아니거나, 비회원이라면

$hp_hyphen = substr($hp, 0, -4) . "****";



echo $hp_hyphen;

exit;



$member['mb_level'] = 1; <- 레벨을 5로 했다가 다른것으로 바꾸며 테스트 해보니 잘 되는데요. 
$list[$i]['wr_6'] = "공일공-1234-5678"; <- 이부분은 sir 게시판에 전화번호 노출이 안되서 공일공을 한글로 임의로 적은것이니 010 으로 변경해서 테스트 해보세요
 

$list 는 루프를 도는데, 

$hp_hyphen 는 루프 도는동안 계속 덮어쓰고 있으니,  

루프 안에서 출력하지 않는이상 루프 바깥에서 출력하게되면 마지막 루프값만 갖게 되는것이니 고것도 확인해보시구요

답변을 작성하시기 전에 로그인 해주세요.
전체 12
QA 내용 검색

회원로그인

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