метод выбора случайных символов из заданной строки

Может ли кто-нибудь помочь мне с решением, которое вытаскивает позицию и значение случайного символа из заданной строки с использованием PHP. Например, у меня есть строковая переменная $ string = 'helloworld'; и хотел бы случайным образом выбрать символ из строки $ и отобразить символ и его позицию.

$str = 'helloworld'; $randomChar = $str[rand(0, strlen($str)-1)]; 

CodePad .

 $string = 'helloworld'; $pos = rand(0,(strlen($string)-1)); echo $pos."th char is: ". $string[$pos]; 

Используя mt_rand() ,

Вы можете получить индекс случайного символа:

 $charIndex = mt_rand(0, strlen($string)-1); $char = $string[$charIndex]; // or substr($string, $charIndex, 1) 
 $name = "Hello"; echo $name[rand(0,strlen(substr($name,0,strlen($name)-1)))]; 

Поскольку никто не упоминал о каком-либо безопасном методе utf8 (многобайтовый), вот мой:

 mb_internal_encoding("UTF-8"); $possible="aábcdeéfghiíjklmnoóöópqrstuúüűvwxyzAÁBCDEÉFGHIÍJKLMNOÓÖŐPQRSTUÚVWXYZ"; $char=mb_substr($possible,rand(0, mb_strlen($possible) - 1),1); 

Сначала выберите случайное число <strlen ($ yourchain) -1;

Затем substr ($ yourchain, $ random, $ random + 1);

 echo substr($string, rand(0, strlen($string)-1), 1); 

Вы можете использовать функцию rand($x,$y) которая возвращает случайное число между $x и $y включительно:

 $str = 'helloworld'; // get a random index between 0 and the last valid index $rand_pos = rand(0,strlen($str)-1); // access the char at the random index. $rand_chr = $str[$rand_pos]; 
 $str = "helloworld"; $randIndex = rand(0,strlen($str)); echo $str[$randIndex]," is at $randIndex"; 
  1. найдите длину строки, ($ length)
  2. используйте случайную функцию для генерации случайного значения в этом диапазоне ($ a = Random.get ($ length))
  3. используйте функцию подстроки, чтобы получить значение случайной позиции. ($ string.substring ($ a, 1))

извините, я не знаю синтаксиса для php (java \ m /)

 $string = 'helloworld'; //generate a random position between 0 and string length ( note the -1 ) $randPos = mt_rand(0, strlen($string)-1); echo 'Position : ' . $randPos . "\n"; echo 'Character : ' . $string[$randPos] . "\n"; 

Просто для удовольствия:

 $chars = preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY); echo $string[array_rand($chars)]; 

Больше внутренних накладных расходов, но их легко читать:

 $str = 'helloworld'; $randChar = $str[array_rand(str_split($str))]; 

Код:

 $string = 'helloworld'; $position = rand(0, strlen($string)); $character = $string[$position-1]; echo $character . ' is placed ' . $position . ' in the following string: ' . $string; 

Пример вывода:

e помещается 2 в следующую строку: helloworld


Демо-версия CodePad

Для тех, кто захочет использовать его для одного и того же случая, такого как мой:

Я просто написал простой SecretGenerator:

 echo generateSecret(10); function generateSecret($length) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&!^§\$ß"; $key = ""; for($i = 0; $i <= $length; $i++){ $key .= $chars[mt_rand(0, strlen($chars)-1)]; } return $key; } 

Вернет что-то вроде этого: «6qß ^ 0UoH7NP»

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