Php 在字符串的特定位置查找字符

Php 在字符串的特定位置查找字符,php,Php,因为我对PHP还是新手,所以我正在寻找一种方法来找出如何从字符串中获取特定字符 例如: $word = "master"; $length = strlen($word); $random = rand(1,$length); 假设$random值是3,那么我想知道第三个字符是什么,所以在这个例子中是字符“s”。如果$random是2,我想知道它是“a” 我相信这真的很容易,但我尝试了近一个小时的substr想法,但总是失败 非常感谢您的帮助。请简单地尝试一下: $word = "master

因为我对PHP还是新手,所以我正在寻找一种方法来找出如何从字符串中获取特定字符

例如:

$word = "master";
$length = strlen($word);
$random = rand(1,$length);
假设$random值是3,那么我想知道第三个字符是什么,所以在这个例子中是字符“s”。如果$random是2,我想知道它是“a”

我相信这真的很容易,但我尝试了近一个小时的substr想法,但总是失败

非常感谢您的帮助。

请简单地尝试一下:

$word = "master";
$length = strlen($word);
$random = rand(0,$length-1);

if($word[$random] == 's'){
 echo $word[$random]; 
}
这里我使用了0,因为
$word[0]
m
,所以我们需要从
strlen($word)
中减去一个,以获得最后一个字符
r

,您可以使用它来获取字符串的一部分,从一个点开始,一直到长度。例如:

substr('abcde', 1, 1); //returns b
就你而言:

$word = "master";
$length = strlen($word) - 1;
$random = rand(0,$length);
echo substr($word, $random, 1);//echos single char at random pos
$word = "master";
$length = strlen($word);
$random = rand(0,$length-1);

echo $word[$random];

在操作中查看它

使用
substr

$GetThis = substr($myStr, 5, 5);
如果需要多个字符,只需对相同或不同的字符使用相同的值即可

$word = "master";
$length = strlen($word);
$random = rand(0,$length-1);
$GetThis = substr($word, $random, $random);

正如我在评论中指出的(我也忽略了),请确保在
0
处开始
rand
以包含字符串的开头,因为
m
位于
0
处。如果我们都忽略了它不是随机的(作为随机的?),那么现在它会:)

您可以像使用基于0的索引数组一样使用字符串:

$some_string = "apple";
echo $some_string[2];
它会打印“p”

或者,在您的情况下:

$word = "master";
$length = strlen($word) - 1;
$random = rand(0,$length);
echo substr($word, $random, 1);//echos single char at random pos
$word = "master";
$length = strlen($word);
$random = rand(0,$length-1);

echo $word[$random];

您可以简单地使用
$myStr{$random}
来获取字符串的第n个字符。

“它总是失败”--我们可以看到您的尝试吗?需要注意的是,字符串的索引是以零为基础的,因此如果random是3,您应该期望得到't',您可以将字符串视为数组
$word[0]
应该是m。我敢打赌您的substr是正确的,您可能只是从1开始,而不是从0开始。按照您的方式,您将永远无法访问$word[0],因为您的随机数从1开始。echo$word[$random]。。。。类似的东西?如前所述,它永远不会碰到“m”并且可能超出边界。因此请注意,substr的最后一个参数是要返回的子字符串的最大长度,而不是要结束的索引,因此,如果OP使用您的代码和echo的
$GetThis
,则在所有情况下它都可能为1,如果
$GetThis=substr($word,$random,$random)
---只是说;-)中没有结束分号,将出现解析错误@Fred-ii我不应该只是从头顶上输入东西:)@sealz我有时也这么做,但当涉及到真正的“重要”东西时,那么是的。。。不能那样做。(哈哈)干杯;-)(+1)顺便说一句-它确实有效。如前所述,它永远不会碰到“m”,并且可能超出固定的范围。忘了我需要做长度-1来防止如此多的脱发,这真的很有效。我用substr玩了将近一个小时,主要的问题是偏移量,因为我不知道我必须从0开始,而不是从1开始。再次感谢!字符串是基于0的索引。第一个字符位于$str[0]处,每个字符递增。已弃用-请勿使用。(这是一个古老的答案)