PHP code example of snowmannunu / mask-cn

1. Go to this page and download the library: Download snowmannunu/mask-cn library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

snowmannunu / mask-cn example snippets


use MaskCn\Mask;

Mask::phone("13812345678");           // "138****5678"
Mask::idCard("110101199003078888");   // "110101********8888"
Mask::bankCard("6222021234567890123"); // "6222 *********** 0123"
Mask::name("张三");                    // "张*"
Mask::name("欧阳娜娜");                // "欧阳*娜"     ← 复姓识别
Mask::name("诸葛孔明");                // "诸葛*明"     ← 复姓识别
Mask::email("[email protected]");        // "f**@example.com"
Mask::plate("京A12345");              // "京A***45"

Mask::uscc("91110105MA00XXXXXX");      // "91110105********XX"  ← 统一社会信用代码
Mask::uscc("123456789");               // "123****89"          ← 组织机构代码
Mask::uscc("110101123456789");         // "110101******789"    ← 旧版营业执照

Mask::hkMoPass("H12345678");           // "H****5678"          ← 港澳回乡证
Mask::hkMoPass("81000019900101001X");  // "810000********001X" ← 港澳居住证

Mask::taiwanId("A123456789");          // "A1****789"          ← 台湾身份证
Mask::taiwanId("83000019900101001X");  // "830000********001X" ← 台湾居住证

Mask::passport("E12345678");           // "E****5678"          ← 护照

Mask::address("广东省深圳市南山区科技园");         // "广东省深圳市******"
Mask::address("北京市朝阳区建国路");               // "北京市******"
Mask::address("广西壮族自治区南宁市青秀区民族大道"); // "广西壮族自治区南宁市*******"

use MaskCn\Mask;
use MaskCn\Strategy\StrategyInterface;

class AsteriskStrategy implements StrategyInterface
{
    public function mask(string $input, array $options = []): string
    {
        $char = isset($options["char"]) ? (string) $options["char"] : "*";
        return str_repeat($char, strlen($input));
    }
}

Mask::register("secret", new AsteriskStrategy());
Mask::secret("password123");           // "***********"
Mask::secret("password123", ["char" => "#"]); // "###########"

Mask::array(["token" => "abc123"], ["token" => "secret"]);
// ["token" => "******"]

$user = [
    "name" => "张小明",
    "phone" => "13812345678",
    "id_card" => "110101199003078888",
];

Mask::array($user, [
    "name" => "name",
    "phone" => "phone",
    "id_card" => "idCard",
]);
// ["name" => "张*明", "phone" => "138****5678", "id_card" => "110101********8888"]

$text = "我的电话是 13812345678,身份证是 110101199003078888,邮箱 [email protected]";
Mask::auto($text);
// "我的电话是 138****5678,身份证是 110101********8888,邮箱 f**@bar.com"

// 自定义掩码字符
Mask::auto($text, ["char" => "#"]);
// "我的电话是 138####5678,身份证是 110101########8888,邮箱 f##@bar.com"

// 限制识别类型
Mask::auto($text, ["types" => ["phone", "idCard"]]);
// 只脱敏手机号和身份证,邮箱保留原样

// JSON 字符串自动脱敏
$json = '{"user":{"phone":"13812345678","idCard":"110101199003078888"},"email":"[email protected]"}';
Mask::auto($json);
// '{"user":{"phone":"138****5678","idCard":"110101********8888"},"email":"f**@bar.com"}'

use MaskCn\Config;
use MaskCn\Mask;

Config::set(['char' => '#']);

Mask::phone('13812345678');        // "138####5678"
Mask::idCard('110101199003078888'); // "110101########8888"
Mask::auto('电话 13812345678');     // "电话 138####5678"

Config::set(['char' => '#']);
Mask::phone('13812345678', ['char' => '*']); // "138****5678" ← options 优先

Config::reset(); // 清空配置

use MaskCn\Logger\MaskSensitiveLogger;
use Psr\Log\LoggerInterface;

$maskLogger = new MaskSensitiveLogger($originalLogger);
$maskLogger->info('用户 phone: 13812345678, 身份证: 110101199003078888');
// 实际记录: "用户 phone: 138****5678, 身份证: 110101********8888"

use MaskCn\Logger\MaskProcessor;

$message = MaskProcessor::process('用户 phone: 13812345678');
// "用户 phone: 138****5678"

Mask::phone("13812345678", ["char" => "#"]);     // "138####5678"
Mask::idCard("110101199003078888", ["char" => "#"]); // "110101########8888"

use MaskCn\Laravel\Facades\Mask;

Mask::phone($user->phone);
Mask::register("secret", new AsteriskStrategy());

use MaskCn\Laravel\Rules\MaskedField;

$request->validate([
    "phone_masked" => ["string", new MaskedField("phone")],
    "plate_masked" => ["string", new MaskedField("plate")],
    "passport_masked" => ["string", new MaskedField("passport")],
]);