Может ли кто-нибудь помочь мне с решением, которое вытаскивает позицию и значение случайного символа из заданной строки с использованием 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";
извините, я не знаю синтаксиса для 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»
Конечно, это не безопасная функция, но для генерации простых хэшей вполне нормально использовать.