stfn / php-random-string

v1.0.0 2023-03-23 15:53 UTC

This package is not auto-updated.

Last update: 2024-09-21 01:44:54 UTC


README

Latest Version on Packagist Tests

此包可用于根据您的字符集或预定义字符集生成随机字符串。您可以配置字符串长度、前缀、后缀和字符串数量,或在某些条件下跳过某些字符串...

安装

您可以通过composer安装此包

composer require stfn/php-random-string

用法

基本

无配置的简单示例。

$string = RandomString::new()->generate(); // Output: RIKdjFzuDaN12RiJ

长度定义

您可以控制字符串的长度。默认长度为16个字符。

$string = RandomString::new(6)->generate(); // Output: dzGcot

预定义字符集

如果您想生成只包含数字、小写字母或大写字母的字符串,可以使用预定义字符集。

// Generate string that contains only numbers
$config = StringConfig::make()
            ->numbersOnly();

$string = RandomString::fromConfig($config)->generate(); // Output: 9387406871490781

// Generate string that contains only lowercase letters
$config = StringConfig::make()
            ->lowerCaseOnly();

$string = RandomString::fromConfig($config)->generate(); // Output: hvphyfmgnvbbajve

// Generate string that contains only uppercase letters
$config = StringConfig::make()
            ->upperCaseOnly();

$string = RandomString::fromConfig($config)->generate(); // Output: ZIVSUDQHAMDNQAYV

自定义字符集

或者,您可以使用自定义字符集生成随机字符串。

$config = StringConfig::make()
            ->charset("ABCDEFG1234");

$string = RandomString::fromConfig($config)->generate(); // Output: 3B41B32C2A12A3A1

跳过

有时您可能想要生成随机字符串,但满足特定条件。例如,给我一个不包含此数组的字符串。

$config = StringConfig::make()
            ->numbersOnly()
            ->length(6)
            ->skip(function ($string) {
                return in_array($string, ["025922", "104923"]);
            });

$string = RandomString::fromConfig($config)->generate(); // Output: 083712

前缀和后缀

如果您想在生成的字符串中添加前缀或后缀,可以这样做。

$config = StringConfig::make()
            ->length(6)
            ->prefix("PRE_")
            ->suffix("_AFTER");

$string = RandomString::fromConfig($config)->generate(); // Output: PRE_rkM7Jl_AFTER

随机字符串数组

RandomString 可以生成不止一个字符串。

$config = StringConfig::make()
            ->length(6)
            ->count(3);

$strings = RandomString::fromConfig($config)->generate();

// Output: ["ozBYeT", "BYjCtr", "Sw7O5b"];

唯一性

生成的数组中可能存在不唯一的字符串(虽然很少见,但有可能)。如果您想避免这种情况,只需更改配置即可。

$config = StringConfig::make()
            ->length(6)
            ->count(3)
            ->unique();

$strings = RandomString::fromConfig($config)->generate();

// Output: ["92ONRj", "Me6oym", "WbBPVc"];

一行代码

如果您不想每次都创建2个对象,可以使用 fromArray 方法。

$string = RandomString::fromArray(['length' => 6, 'charset' => 'ABCD1234'])->generate(); // Output: CCDA1D

测试

composer test

安全性

RandomString 类旨在生成随机且不可预测的字符串,但请注意,它不是一个密码学安全的哈希函数,不应用于密码散列或密钥生成等敏感应用。

变更日志

有关最近更改的更多信息,请参阅 变更日志

致谢

许可协议

MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件