如何将字符串中字符的大小写随机转换为小写/大写?,例如:
$str = "alternating case";
我想得到这样的结果:
$newstr = "aLtErNaTiNg cAsE";
和
$newstr = "AlTeRnAtInG CaSe";
这可能吗?谢谢
答案 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
}
*请注意,我只是在回答这个未解决的问题,因为尚未为您提供最佳的解决方案,未来的研究人员应该看到最好的解决办法。