Mask sensitive data in strings, arrays, and objects for safe logging

Maintainers

Package info

github.com/philiprehberger/php-mask

pkg:composer/philiprehberger/php-mask

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.3 2026-03-17 20:06 UTC

This package is auto-updated.

Last update: 2026-03-17 20:09:11 UTC


README

Tests Latest Version on Packagist License

Mask sensitive data in strings, arrays, and objects for safe logging.

Requirements

Dependency Version
PHP ^8.2

Installation

composer require philiprehberger/php-mask

Usage

Email masking

use PhilipRehberger\Mask\Mask;

Mask::email('john@example.com');
// "j***@e******.com"

Phone masking

Mask::phone('+1-555-123-4567');
// "+1-555-***-4567"

Credit card masking

Mask::creditCard('4111 1234 5678 1111');
// "4111 **** **** 1111"

IP address masking

Mask::ip('192.168.1.100');
// "192.168.*.*"

Generic string masking

Mask::string('SensitiveData');
// "Se*********ta"

Mask::string('SensitiveData', visibleStart: 3, visibleEnd: 3);
// "Sen*******ata"

Array masking (deep)

$data = [
    'name' => 'John',
    'email' => 'john@example.com',
    'nested' => [
        'ssn' => '123-45-6789',
    ],
];

Mask::array($data, ['email', 'ssn']);
// ['name' => 'John', 'email' => 'jo************om', 'nested' => ['ssn' => '12*******89']]

JSON masking

$json = '{"name":"John","ssn":"123-45-6789"}';

Mask::json($json, ['ssn']);
// '{"name":"John","ssn":"12*******89"}'

Custom configuration

use PhilipRehberger\Mask\MaskConfig;

Mask::configure(new MaskConfig(
    maskChar: '#',
    preserveLength: false,
    visibleStart: 3,
    visibleEnd: 3,
));

Mask::string('SensitiveData');
// "Sen###ata"

API

Method Description
Mask::email(string $email): string Mask an email address, preserving first char of local/domain and TLD
Mask::phone(string $phone): string Mask a phone number, preserving country code and last 4 digits
Mask::creditCard(string $number): string Mask a credit card, showing first 4 and last 4 digits
Mask::ip(string $ip): string Mask an IP address, showing first two octets (v4) or groups (v6)
Mask::string(string $value, int $visibleStart = 2, int $visibleEnd = 2): string Mask a generic string with configurable visible characters
Mask::array(array $data, array $keys): array Deep-mask specified keys in an associative array
Mask::json(string $json, array $keys): string Parse JSON, mask specified keys, re-encode
Mask::configure(MaskConfig $config): void Set global masking configuration
Mask::resetConfig(): void Reset configuration to defaults

Development

composer install
vendor/bin/phpunit
vendor/bin/pint --test
vendor/bin/phpstan analyse

License

MIT