从给定字符串中选择随机字符的方法

时间:2011-03-15 11:57:20

标签: php

任何人都可以帮我解决一个使用PHP从给定字符串中提取随机字符的位置和值的解决方案。例如,我有一个字符串变量$ string ='helloworld';并且想从$ string中随机选择一个字符并回显字符及其位置。

15 个答案:

答案 0 :(得分:26)

$str = 'helloworld';

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

CodePad

答案 1 :(得分:7)

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

答案 2 :(得分:2)

使用mt_rand()

您可以通过以下方式获取随机字符的索引:

$charIndex = mt_rand(0, strlen($string)-1);
$char = $string[$charIndex]; // or substr($string, $charIndex, 1)

答案 3 :(得分:2)

$name = "Hello";
echo $name[rand(0,strlen(substr($name,0,strlen($name)-1)))];

答案 4 :(得分:2)

由于没有人提到任何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);

答案 5 :(得分:0)

首先选择一个随机数< strlen的($ yourchain)-1;

然后是substr($ yourchain,$ random,$ random + 1);

答案 6 :(得分:0)

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

答案 7 :(得分:0)

您可以使用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];

答案 8 :(得分:0)

$str = "helloworld";
$randIndex = rand(0,strlen($str));
echo $str[$randIndex]," is at $randIndex";

答案 9 :(得分:0)

只是为了好玩:

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

答案 10 :(得分:0)

  1. 找到字符串的长度,($ length)
  2. 使用随机函数生成该范围内的随机值,($ a = Random.get($ length))
  3. 使用substring函数获取随机位置的值。($ string.substring($ a,1))
  4. 抱歉,我不知道php(java \ m /)

    的语法

答案 11 :(得分:0)

$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";

答案 12 :(得分:0)

更多内部开销,但易于阅读:

$str = 'helloworld';

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

答案 13 :(得分:0)

<强>代码:

$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 Demo

答案 14 :(得分:0)

对于任何想要将它用于像我一样的案件的人来说:

我刚写了一个简单的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”

当然,这不是一个安全的功能,但是为了生成简单的哈希,它可以使用。