如何在PHP中将字符串中字符的大小写随机转换为小写/大写?

时间:2018-10-04 07:22:25

标签: php string random case

如何将字符串中字符的大小写随机转换为小写/大写?,例如:

$str = "alternating case";

我想得到这样的结果:

$newstr = "aLtErNaTiNg cAsE";

$newstr = "AlTeRnAtInG CaSe";

这可能吗?谢谢

3 个答案:

答案 0 :(得分:1)

您在问题中提到随机大小写。因此,这是示例代码,您可以修改此代码以获得更好的随机结果

$str = "alternating case";
$arrr=array();
$data='';
for($i=0; $i<strlen($str); $i++){
    $random=rand(1,strlen($str));
    if($random > strlen($str)/2){
        $data=$data.strtoupper($str[$i]);
    }else{
        $data=$data.strtolower($str[$i]);
    }
}

print_r($data);

您可以检查所需的output here

详细信息:

  • 使用strlen函数来获取字符串的长度
  • 使用rand函数获取随机值

答案 1 :(得分:0)

是的。将字符串用于Upper函数:

<?php
$str1 = "alternating case";
$str1 = strtolower($str1);
for ($x = 0; $x < strlen($str1); $x++){
    if ($x % 2 == 0) {
        $str1[$x] = strtoupper($str1[$x]);
    }
}
echo "For first letter Uppercase: {$str1}";

$str2 = "alternating case";
$str2 = strtolower($str2);
for ($x = 0; $x < strlen($str2); $x++){
    if ($x % 2 != 0) {
        $str2[$x] = strtoupper($str2[$x]);
    }
}
echo "<br>For first letter Lowercase: {$str2}";

?>

Use strtoupper()

答案 2 :(得分:0)

在php中,可以使用数组语法处理字符串-换句话说,您可以使用字符串的“偏移量”(这些整数值从0开始)访问字符串中的每个字符。

以上是正确的除非,您正在处理多字节字符。如果是这样,您将需要实现mb_前缀函数。具体来说,您需要mb_strlen()mb_substr()mb_strtoupper()

没有理由在任务中编写条件语句。使用rand()确定字符串的起点,然后在每次迭代后将计数器变量($i)加2。

根据最佳实践,请勿在{{1​​}}循环的每次迭代中调用strlen() -在循环开始时生成值,并始终使用静态值。

代码:(Demo

for()

输出:

for ($x = 0; $x < 10; ++$x) {  // make 10 iterations to show randomness
    $string = "alternating case";  // start with a fressh all lowercase string for each test iteration
    for ($i = rand(0,1), $len = strlen($string); $i < $len; $i += 2) {  // random start point, double-incremenation
        $string[$i] = strtoupper($string[$i]);  // unconditionally convert to uppercase
    }
    echo "$string\n";  // display the iteration's output
}

*请注意,我只是在回答这个未解决的问题,因为尚未为您提供最佳的解决方案,未来的研究人员应该看到最好的解决办法。