У меня проблема, и я надеюсь, что вы мне поможете, пожалуйста.
У меня есть код:
$a = 'A B C D E';
$b = '{A|a|AA}{B|b|BB} {E|e|EEE}';
И я хочу использовать $ б в случайном порядке $ а как это:
A b C D EE
AA B C D e
A b C D EEE ...
Это значит:
заменить на , или же А.А.
В заменить на В, б или же BB
а также
Е заменить на Е, е или же EEE
Я надеюсь, что вы понимаете и помогаете мне, большое спасибо !!! <3
Если вы не привязаны к формату $ 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. Вы можете легко адаптироваться к исключениям.
Других решений пока нет …