
미천한 실력이나 어째저째 여분필드도 연구하여 하이픈도 넣어서 이렇게 노출되고 있는데
여기서 중간 4자리랑 마지막 앞 2자리를 마스킹처리(*)하고 싶어
$list[$i]['wr_8'] = preg_replace('/-(\d+)-/e',"'-'.str_repeat('*',strlen('\\1')).'-'",$list[$i]['wr_8']);
위 코드를 넣었는데 연락처가 아예 나오지 않습니다..
연락처는 인풋창 하나에 01000000000 이렇게 받습니다
부디 방법을 알려주시면 감사하겠습니다!
답변 4개 / 댓글 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);
배르만님 말씀이 맞았습니다!
hyphen_hp_number함수를 없애니까 원하는대로 노출이 되네요
아...php공부를 아주아주 기초부분만 해서인지 어렵네요
설국열차님이 주신 코드도 정상 작동합니다
두분 모두 감사합니다
새해 복 많이 받으세요~!
배르만님, 설국열차님 댓글 너무 감사합니다
하지만 배르만님이 남겨주신 코드를 이렇게 사용하면
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']);
설국열차님이 남겨주신 코드로 했을때는 아예 마스킹처리가 되지 않는데
혹시 제가 무슨 설정이 안되어 있는걸까요??...
두분 코드가 틀린거 같지는 않은데요
답변에 대한 댓글 4개
원본 값이 어떤 형태인지 확인이 필요할것 같습니다.
답변드린 코드는
숫자3자리-숫자4자리-숫자4자리
의 경우 유효한 코드입니다.
<input type="text" name="wr_8" value="<?php echo $write['wr_8'] ?>" class="frm_input2" size="10" maxlength="11">
인풋박스 여분필드 지정해주고
list.skin.php에서
for ($i=0; $i<count($list); $i++) {
if ($i%2==0) $lt_class = "even";
else $lt_class = "";
if (!$is_admin && $list[$i]['wr_8']) {
$list[$i]['wr_8'] = preg_replace('/-\d{4}-\d{2}/','-****-**',$list[$i]['wr_8']);-(두 분 코드)
}
?>
넣고 노출되어야 할 곳에
<td class="td_phone"><?php echo hyphen_hp_number($list[$i]['wr_8']); ?></td>
이런식으로 작성했습니다
마스킹과 하이픈이 동시에 처리되어 노출되는게 아니라서 그런걸까요??
가공된 string 을 hyphen_hp_number 함수에서 다시 가공하는것 같은데
함수 벗겨내고 확인한번 해보세요
[code]
<td class="td_phone"><?php echo $list[$i]['wr_8']; ?></td>
[/code]
010-1234-5678
$list[$i]['wr_8'] = preg_replace('/-(\d{4})-/i',"-****-",$list[$i]['wr_8']);
위의 코드를 적용하면
010-****-5678
이와 같이 됩니다.
답변을 작성하려면 로그인이 필요합니다.
이런 식으로 번호가 입력되어 있어야 합니다.
-0000- 부분을 찾아서 -****- 이렇게 바꿔 주는 것입니다.