[PHP] 마스킹 처리된 문자열 얻기

주어진 utf-8 유니코드 문자열을 마스킹 처리하는 함수이다.

<?php
function get_masking_string($str, $len1, $len2=0, $limit=0, $mark='*')
{
    $arr_str = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
    $str_len = count($arr_str);

    $len1 = abs($len1);
    $len2 = abs($len2);

    if($str_len <= ($len1 + $len2))
        return $str;

    $str_head = '';
    $str_body = '';
    $str_tail = '';

    $str_head = join('', array_slice($arr_str, 0, $len1));
    if($len2 > 0)
        $str_tail = join('', array_slice($arr_str, $len2 * -1));

    $arr_body = array_slice($arr_str, $len1, ($str_len - $len1 - $len2));

    if(!empty($arr_body)) {
        $len_body = count($arr_body);
        $limit    = abs($limit);

        if($limit > 0 && $len_body > $limit)
            $len_body = $limit;

        $str_body = str_pad('', $len_body, $mark);
    }

    return $str_head.$str_body.$str_tail;
}

$id = 'abc12234pro';

echo get_masking_string($id, 3, 2);
?>

위 코드를 실행하면 abc******ro 의 결과를 얻게 된다.

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

카카오톡 플러스친구 채팅 : NCUBE.NET

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.