Laravel 中的 str::random() 函数简而言之 URL 可靠吗?
Is the str::random() function in Laravel reliable for short URL?
我正在尝试在我的 Laravel 项目中创建一个简单的 url 缩短器。我只想使用小写和大写字母和数字作为短 url 地址。 (例如:sD7hY6g)
除了这些字符之外,“Str::random()”是否有可能在 Laravel returns 中的“Illuminate\Support\Str”class 下运行?我可以信任这个函数还是需要创建自己的自定义函数?
(另外,无论我用哪个功能,我在录制前都会检查代码是否已经在数据库中。)
谢谢大家提前回答
您是否应该相信 Str::random()
总是 return 字母数字字符串?是的
该函数通过编码为 base 64
数字来规范化其输出。表示 base 64 数字的 64 个符号是 ABCDEFGHIJKLMNOPQRSTUVWXYVabcdefghijklmnopqrstuvwxyz0123456789+\
和 =
用于填充。
该函数还将 \+=
替换为空(空格),这意味着 Str::random()
的唯一可能输出是 ABCDEFGHIJKLMNOPQRSTUVWXYVabcdefghijklmnopqrstuvwxyz0123456789
.
Laravel 5+的Illuminate\Support\Str@random
public static function random($length = 16)
{
$string = '';
while (($len = strlen($string)) < $length) {
$size = $length - $len;
$bytes = random_bytes($size);
$string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size);
}
return $string;
}
我正在尝试在我的 Laravel 项目中创建一个简单的 url 缩短器。我只想使用小写和大写字母和数字作为短 url 地址。 (例如:sD7hY6g) 除了这些字符之外,“Str::random()”是否有可能在 Laravel returns 中的“Illuminate\Support\Str”class 下运行?我可以信任这个函数还是需要创建自己的自定义函数?
(另外,无论我用哪个功能,我在录制前都会检查代码是否已经在数据库中。)
谢谢大家提前回答
您是否应该相信 Str::random()
总是 return 字母数字字符串?是的
该函数通过编码为 base 64
数字来规范化其输出。表示 base 64 数字的 64 个符号是 ABCDEFGHIJKLMNOPQRSTUVWXYVabcdefghijklmnopqrstuvwxyz0123456789+\
和 =
用于填充。
该函数还将 \+=
替换为空(空格),这意味着 Str::random()
的唯一可能输出是 ABCDEFGHIJKLMNOPQRSTUVWXYVabcdefghijklmnopqrstuvwxyz0123456789
.
Laravel 5+的Illuminate\Support\Str@random
public static function random($length = 16)
{
$string = '';
while (($len = strlen($string)) < $length) {
$size = $length - $len;
$bytes = random_bytes($size);
$string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size);
}
return $string;
}