PHP: как добавить случайный символ в строку в произвольной позиции - PullRequest
6 голосов
/ 28 июня 2011

Как я могу добавить один случайный символ (0-9 или a-z или - или _) в произвольном месте в строке.

Я могу получить случайную позицию следующим образом:

$random_position = rand(0,5);

Теперь Как я могу получить случайное число (от 0 до 9) ИЛИ случайный символ (от a до z) ИЛИ (-) ИЛИ (_)

и, наконец, как я могу добавить символ к указанной строке в указанной выше случайной позиции.

Например, следующая строка:

$string = "abc123";
$random_position = 2;
$random_char = "_";

новая строка должна быть:

"a_bc123"

Ответы [ 5 ]

5 голосов
/ 28 июня 2011
$string = "abc123";
$random_position = rand(0,strlen($string)-1);
$chars = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789-_";
$random_char = $chars[rand(0,strlen($chars)-1)];
$newString = substr($string,0,$random_position).$random_char.substr($string,$random_position);
echo $newString;
2 голосов
/ 28 июня 2011

попробуйте что-то вроде этого

<?php 

   $orig_string = "abc123";
   $upper =strlen($orig_string);
   $random_position = rand(0,$upper);
   $int = rand(0,51);
   $a_z = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   $rand_char = $a_z[$int];


   $newstring=substr_replace($orig_string, $rand_char, $random_position, 0);

   echo 'original-> ' .$orig_string.'<br>';
   echo 'random-> ' .$newstring;
?>
1 голос
/ 28 июня 2011
$string = 'abc123';
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789-_';
$new_string = substr_replace(
    $string,
    $chars[rand(0, strlen($chars)-1)],
    rand(0, strlen($string)-1),
    0
);
0 голосов
/ 28 июня 2011

получить длину строки:

$string_length = strlen($string);//getting the length of the string your working with
$random_position = 2;//generate random position

генерирует «случайный» символ:

$characters = "abcd..xyz012...89-_";//obviously instead of the ... fill in all the characters - i was just lazy.

получение случайного символа из строки символов:

$random_char = substr($characters, rand(0,strlen($characters)), 1);//if you know the length of $characters you can replace the strlen with the actual length

разбить строку на 2 части:

$first_part = substr($string, 0, $random_position);
$second_part = substr($string, $random_position, $string_length);

добавление случайного символа:

$first_part .=  $random_char;

объединяя их вместе:

$new_string = $first_part.$second_part;

это может быть не самый лучший способ, но я думаю, что это следует сделать ...

0 голосов
/ 28 июня 2011
// map of characters
$map = '0123456789abcdefghijklmnopqrstuvwxyz-_';
// draw a random character from the map
$random_char_posotion = rand(0, strlen($map)-1); // say 2?
$random_char = $map[$random_char_posotion]; // 2

$str = 'abc123';

// draw a random position
$random_position = rand(0, strlen($str)-1); // say 3?

// inject the randomly drawn character
$str = substr($str, 0, $random_position).$random_char.substr($str,$random_position);

// output the result
echo $str; // output abc2123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...