PHP

Mask Sensitive Strings (credit cards / emails)

admin by @admin ADMIN
Jun 20, 2026
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Mask the middle of a string while keeping a few characters at each end visible. Useful for displaying credit card numbers, emails, or API keys in UI without leaking them in full.
PHP
Raw
<?php
function maskMiddle(string $s, int $keepStart = 4, int $keepEnd = 4, string $mask = '*'): string {
    $len = mb_strlen($s);
    if ($len <= $keepStart + $keepEnd) return str_repeat($mask, $len);
    $start = mb_substr($s, 0, $keepStart);
    $end   = mb_substr($s, -$keepEnd);
    return $start . str_repeat($mask, $len - $keepStart - $keepEnd) . $end;
}

function maskEmail(string $email): string {
    [$user, $domain] = array_pad(explode('@', $email, 2), 2, '');
    $userMasked = mb_strlen($user) <= 2
        ? str_repeat('*', mb_strlen($user))
        : mb_substr($user, 0, 1) . str_repeat('*', mb_strlen($user) - 2) . mb_substr($user, -1);
    return $userMasked . '@' . $domain;
}

echo maskMiddle('4242424242424242');       // 4242********4242
echo maskEmail('hello@example.com');        // h***o@example.com
echo maskMiddle('sk_live_AbC1234', 7, 0);   // sk_live_********
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.