feat: 增加订阅地址支持[*-*]表达式

This commit is contained in:
xboard 2023-12-08 20:16:24 +08:00
parent 9192d5c11f
commit c85ca31718

View File

@ -111,7 +111,8 @@ class Helper
public static function getSubscribeUrl($path)
{
$subscribeUrls = explode(',', admin_setting('subscribe_url'));
$subscribeUrl = $subscribeUrls[rand(0, count($subscribeUrls) - 1)];
$subscribeUrl = $subscribeUrls[array_rand($subscribeUrls)];
$subscribeUrl = self::replaceRandomNumber($subscribeUrl);
if ($subscribeUrl) return $subscribeUrl . $path;
return url($path);
}
@ -126,4 +127,27 @@ class Helper
$encoded = base64_encode($data);
return str_replace(['+', '/', '='], ['-', '_', ''], $encoded);
}
/**
* 替换字符串中的 [num1-num2] 格式为介于 num1 num2 之间的随机数字
*
* @param string $input 用户输入的字符串
* @return string 替换后的字符串
*/
public static function replaceRandomNumber($input) {
// 匹配 [1-4999] 格式的正则表达式
$pattern = '/\[(\d+)-(\d+)\]/';
// 使用 preg_replace_callback 替换匹配到的内容
$result = preg_replace_callback($pattern, function ($matches) {
// 提取最小和最大值
$min = intval($matches[1]);
$max = intval($matches[2]);
// 生成随机数
$randomNumber = rand($min, $max);
return $randomNumber;
}, $input);
return $result;
}
}