forever2077/php-random-string

1.0.0 2023-08-20 11:57 UTC

This package is auto-updated.

Last update: 2024-09-20 14:20:09 UTC


README

Latest Version on Packagist Tests

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

安装

您可以通过composer安装此包。

composer require forever2077/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)。有关更多信息,请参阅许可文件