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")],
]);