我有问题,希望你帮助我。
我有一个代码:
$a = 'A B C D E';
$b = '{A|a|AA}{B|b|BB} {E|e|EEE}';
我想使用 $ b 随机显示 $ a ,如下所示:
A b C D EE
AA B C D e
A b C D EEE ...
这意味着:
A 替换为 A , a 或 AA
B 替换为 B , b 或 BB
和
E 替换为 E , e 或 EEE
我希望你理解并帮助我,谢谢你! < 3
答案 0 :(得分:0)
如果你没有坚持$ b的格式,你可以使用数组替换,并选择一个随机项来替换。
$placeholders = 'A B C D E';
$substitutes = [
'A' => ['A','a','AA'],
'B' => ['B','b','BB'],
'E' => ['E','e','EE','EEE'],
];
$replacements = [];
foreach($substitutes as $key => $choices) {
$random_key = array_rand($choices);
$replacements[$key] = $choices[$random_key];
}
$spun = str_replace(
array_keys($replacements),
array_values($replacements),
$placeholders
);
echo $spun;
示例输出:
AA b C D EE
或者(如果你的替补是统一的):
function substitute($character) {
$random = rand(0,2);
$string = $random
? str_repeat($character, $random)
: strtolower($character);
return $string;
}
$spun = implode(
' ',
array_map(
'substitute',
['A','B','C','D','E']
)
);
echo $spun;
但是上面也会替代C和D.你可以很容易地适应排除。