我有一个字符串,我只想用随机数字替换奇数位置。
例如,字符串为'123456'
。现在我想要的输出是'528496'
;
请注意,奇数位置的数字 1,3,5 被随机数字 5,8,9 替换。
我知道如何使用 PHP 循环来完成此操作,但想知道是否可以使用正则表达式来完成。
我在网上找到了以下两个相关解决方案,但仍然无法使其工作。
解决方案1
echo preg_replace('/(.)./', '$1 ', $str);
解决方案2
echo preg_replace_callback('/\d/', function() {
return chr(mt_rand(97, 122));
}, $str);
PS:我试图对这些问题发表评论,但由于我的声誉只有 5,所以无法评论:(
最佳答案
替换奇数索引处的字符
echo preg_replace_callback('/.(.|$)/', function ($matches) {
return rand(0, 9) . $matches[1];
}, $str);
替换偶数索引处的字符
echo preg_replace_callback('/(.)./', function ($matches) {
return $matches[1] . rand(0, 9);
}, $str);
注释
如果您的 PHP 版本低于 7.1,则不应使用 rand()
,因为它是一个无法正常工作的坏函数。请改用 mt_rand(0, 9)
。
如果您需要保证随机数的加密安全,请改用 random_int(0, 9)
。该函数在 PHP 7 中可用。
关于php - 用php中的随机数字替换字符串中的奇数位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63781485/