연락처 마스킹 적용이 되지 않는데요...ㅜ
본문
미천한 실력이나 어째저째 여분필드도 연구하여 하이픈도 넣어서 이렇게 노출되고 있는데
여기서 중간 4자리랑 마지막 앞 2자리를 마스킹처리(*)하고 싶어
$list[$i]['wr_8'] = preg_replace('/-(\d+)-/e',"'-'.str_repeat('*',strlen('\\1')).'-'",$list[$i]['wr_8']);
위 코드를 넣었는데 연락처가 아예 나오지 않습니다..
연락처는 인풋창 하나에 *** 개인정보보호를 위한 휴대폰번호 노출방지 *** 이렇게 받습니다
부디 방법을 알려주시면 감사하겠습니다!
답변 4
우선 /e Modifier 는 더이상 지원되지 않고 에러라고 합니다.
PHP Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
https://www.php.net/manual/en/function.preg-replace.php#refsect1-function.preg-replace-errors
정규식으로는 이렇게 처리할수 있는데
$list[$i]['wr_8'] = preg_replace('/-\d{4}-\d{2}/','-****-**',$list[$i]['wr_8']);
패턴이 단순하다면 다음 방법도 좋을것 같습니다.
$list[$i]['wr_8'] = substr($list[$i]['wr_8'], 0, 3) . '-****-**' . substr($list[$i]['wr_8'], -2);
*** 개인정보보호를 위한 휴대폰번호 노출방지 ***
$list[$i]['wr_8'] = preg_replace('/-(\d{4})-/i',"-****-",$list[$i]['wr_8']);
위의 코드를 적용하면
010-****-5678
이와 같이 됩니다.
배르만님, 설국열차님 댓글 너무 감사합니다
하지만 배르만님이 남겨주신 코드를 이렇게 사용하면
if (!$is_admin && $list[$i]['wr_8']) {
$list[$i]['wr_8'] = substr($list[$i]['wr_8'], 0, 3).'-****-**'.substr($list[$i]['wr_8'], -2);
}
----> 01000 이렇게만 노출이되고
$list[$i]['wr_8'] = preg_replace('/-(\d{4})-/i',"-****-",$list[$i]['wr_8']);
설국열차님이 남겨주신 코드로 했을때는 아예 마스킹처리가 되지 않는데
혹시 제가 무슨 설정이 안되어 있는걸까요??...
두분 코드가 틀린거 같지는 않은데요
배르만님 말씀이 맞았습니다!
hyphen_hp_number함수를 없애니까 원하는대로 노출이 되네요
아...php공부를 아주아주 기초부분만 해서인지 어렵네요
설국열차님이 주신 코드도 정상 작동합니다
두분 모두 감사합니다
새해 복 많이 받으세요~!