在PHP中,向字符串的随机位置插入随机字符是一种常见的字符串操作,可以用于多种场景,如生成随机密码、创建测试数据、实现简单的加密混淆等。
function addRandomChar($string, $numCharsToAdd = 1) {
$length = strlen($string);
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
for ($i = 0; $i < $numCharsToAdd; $i++) {
$randomChar = $chars[rand(0, strlen($chars) - 1)];
$randomPos = rand(0, $length);
$string = substr($string, 0, $randomPos) . $randomChar . substr($string, $randomPos);
$length++; // 字符串长度增加了
}
return $string;
}
// 使用示例
$original = "HelloWorld";
$modified = addRandomChar($original, 3);
echo $modified;
function insertRandomChars($string, $count = 1) {
$charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()';
$stringArray = str_split($string);
for ($i = 0; $i < $count; $i++) {
$randomChar = $charset[random_int(0, strlen($charset) - 1)];
$randomPos = random_int(0, count($stringArray));
array_splice($stringArray, $randomPos, 0, $randomChar);
}
return implode('', $stringArray);
}
// 使用示例
$result = insertRandomChars("ExampleString", 2);
echo $result;
random_int()
而非rand()
mb_*
函数系列function addRandomCharMultibyte($string, $numCharsToAdd = 1) {
$length = mb_strlen($string);
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
for ($i = 0; $i < $numCharsToAdd; $i++) {
$randomChar = $chars[rand(0, strlen($chars) - 1)];
$randomPos = rand(0, $length);
$string = mb_substr($string, 0, $randomPos) . $randomChar . mb_substr($string, $randomPos);
$length++;
}
return $string;
}
// 使用示例
$original = "你好世界";
$modified = addRandomCharMultibyte($original, 2);
echo $modified;