Этот класс предназначен для добавления в текст случайных слов из указанного списка.
Потребность может быть вызвана, например для формирования ссылок на Ваш сайт для предотвращения "склейки" ссылок поисковыми системами.
Например, строка: "Моя голова (машет|трясет|кивает|шевелит) ушами" может быть возвращаена как:
Моя голова машет ушами
Моя голова трясет ушами
Моя голова кивает ушами
Моя голова шевелит ушами
class alternate {
var $s;
var $pattern;
function ms () {
//seeding
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
srand(make_seed());
}
function bracket ($str) {
//returns bracket code
if (!strcmp($str,"(")) {return 1;}
elseif (!strcmp($str,")")) {return -1;} else {return 0;}
}
function alternate ($s="") {
$this->ms();
$this->s=$s;
$this->pattern="/\(([^\(]*?)\)/m";
while (preg_match($this->pattern,$this->s)!=0)
$this->s=preg_replace_callback ($this->pattern,
create_function ('$matches',
'$store=explode("|",$matches[1]);
$store=explode("|",$matches[1]);
$rand_key=$store[array_rand($store,1)];
return $rand_key;'),
$this->s);
}
}
$str=htmlspecialchars($_GET['str']);
if (!empty($str)) {$alter=new alternate ($str);
print "<br>\nИсходная строка: <b>".$str."</b><br>\nРезультат: <b>".($alter->s)."</b><br>\n";}
<p>
<form name="form" method="get">
Строка для преобразования:
<input name="str" type="text" style="width:300px;" />
</form>
</p>
Вы можете скачать скрипт в виде архива генератора случайного текста.
Упрощенный вариант, когда исходный набор слов для генератора определен в виде массива:
$ar=array('машет','трясет','кивает','шевелит');
echo "Моя голова ".$ar[array_rand($ar,1)]." ушами";
Каждый раз при обновлении страницы будет выдано случайное слово из массива:
© Copyright 2008-2018 by KDG