php obscure string
snippet in php

php obscure string

user4027

/**
 * @param string|string[] $plain
 * @param int             $revealStart
 * @param int             $revealEnd
 * @param string          $obscuration
 * @return string|string[]
 */
function obscure(
    $plain,
    int $revealStart = 1,
    int $revealEnd = 0,
    string $obscuration = '*'
) {
    if (is_array($plain)) {
        return array_map(
            function ($plainPart) use ($revealStart, $revealEnd, $obscuration) {
                return obscure($plainPart, $revealStart, $revealEnd, $obscuration);
            },
            $plain
        );
    }
    $plain = (string) $plain;
    return mb_substr($plain, 0, $revealStart)
        . str_repeat(
            $obscuration,
            max(
                0,
                mb_strlen($plain) -
                ($revealStart + $revealEnd)
            )
        )
        . mb_substr(
            $plain,
            -$revealEnd,
            $revealEnd
        );
}