@roma_4711

Как сделать генератор случайных рерайтов?

Нужно чтобы слова в скобках рандомно менялись, у меня получилось так.
Подскажите, как это можно сделать без регулярок?
$x = '{Пожалуйста,|Просто|Если сможете,} сделайте так, чтобы это {удивительное|крутое|простое|важное|бесполезное} тестовое предложение изменялось {быстро|мгновенно|оперативно|правильно} случайным образом каждый раз.';

	preg_match_all('/\{([^\}]+)\}/',$x,$mm,PREG_PATTERN_ORDER);

	$base = array();
	foreach($mm[1] as $num => $m)
	{
	$arr = explode('|',$m);
	$x = str_replace('{'.$m.'}',$arr[array_rand($arr)],$x);
	}

	echo $x;
  • Вопрос задан
  • 239 просмотров
Решения вопроса 1
rpsv
@rpsv
делай либо хорошо, либо никак
<?php

$text = '{part0} сделайте так, чтобы это {part1} тестовое предложение изменялось {part2} случайным образом каждый раз.';
$parts = [
	["Пожалуйста,","Просто","Если сможете,"],
	["удивительное","крутое","простое","важное","бесполезное"],
	["быстро","мгновенно","оперативно","правильно"],
];

for ($i=0; $i<count($parts); $i++)
{
	$name = "{part{$i}}";
	$index = array_rand($parts[$i], 1);
	$value = $parts[$i][$index];

	$text = str_replace($name, $value, $text);
}

echo $text;


или вот так:
<?php

$parts = [
	["Пожалуйста,","Просто","Если сможете,"],
	["удивительное","крутое","простое","важное","бесполезное"],
	["быстро","мгновенно","оперативно","правильно"],
];
$p = [];
foreach ($parts as $key => $values) {
	$index = array_rand($values, 1);
	$p[$key] = $values[$index];
}


$text = "{$p[0]} сделайте так, чтобы это {$p[1]} тестовое предложение изменялось {$p[2]} случайным образом каждый раз.";
echo $text;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Можно искать скобочки при помощи strpos(), вырезать нужный кусок через substr().
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы