Autor Zpráva
STS
Profil *
Neví někdo, jak udělat náhodný text přes php nebo javascript?
panther
Profil
STS:
ať v jednom či druhém, najdi si práci s poli a funkce s tím související.
petr 6
Profil
V principu je to obměna náhodného obrázku z místního FAQ a bylo to popsáno již mnohokrát, takže hledáním zde v diskusi nebo na googlu jistě najdeš spoustu dalších hotových řešení.

(Pokud se tedy ovšem jen ptáš, zda to někdo ví, tak ano, ví.)
Miloš
Profil
Pokud toužíš po ukázce, jednu mám na skladě; je to asi pěkný bastl (nejsem programátor), ale funguje.
http://mfp.php5.cz/
<?php
function versuj(){
	require './pole.php';		 // načti slabiky, se kterými se bude pracovat
	for ($SlovRad = rand(3, 3), $radek1 = $radek2 = array();		$SlovRad > 0;		$SlovRad-- ) { //naplnění řádku
		for ($SlabSlov = rand(1, 4), $SlovoRadek2 = $SlovoRadek1 = array();		$SlabSlov > 0; 		$SlabSlov-- ) { //naplnění slov
      $nahoda = rand(0, count($slabiky) - 1);
			array_push($SlovoRadek1, $slabiky[$nahoda]);	//naplnění 1. slova --> 1 náhodná slabika
      usleep(1);  SRand((double)MicroTime()*1e6); // OHAVNÝ ŘÁDEK, ALE BEZ TOHO SE "NÁHODNÉ" VÝSLEDKY PŘÍLIŠ ČASTO OPAKUJÍ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
			array_push($SlovoRadek2, $slabiky[array_rand($slabiky)]);	//naplnění 2. slova --> 1 náhodná slabika
		};
		for ($i = 0; $i < count($SlovoRadek1); $i++) { 		// sekvenční čtení všech slov 1. řádku
			array_push($radek1, $SlovoRadek1[$i]);			// a jejich nacpání do pole $radek1
			array_push($radek2, $SlovoRadek2[$i]);			// a jejich nacpání do pole $radek2
		}
		array_push($radek1, " "); 		array_push($radek2, " "); //za každé slovo mezeru
	};
	if (rand(1, 4) > 1)	{					//S pravděpodobností 3:1
		array_pop($radek1);	array_pop($radek2); //Zruší poslední mezeru
	}

	$konec = $slabiky[array_rand($slabiky)];
	for ($i = 0; $i < count($radek1); $i++){echo $radek1[$i];} echo $konec;
	echo "<br>";
	for ($i = 0; $i < count($radek2); $i++){echo $radek2[$i];} echo $konec;;
};
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache, must-revalidate">
  <meta http-equiv="expires" content="0">
  <title>Vygenerovaná básnička se stejným počtem slov s rýmem na konci</title>
</head>
<body>
<h1>Bláznička</h1>
<p><?php versuj();echo "<br>";versuj(); ?></p>
</body>
</html>


a soubor pole.php s následujícím obsahem (zkráceno):
<?php
$slabiky = array(
  "ab", "ac", "ač", "ad", // a tak dál, spousta různých slabik...
  "číz", "číž", "číž");
?>
Darker
Profil
Totéž v JS:
function random(length) {
 var text=rnd(1);
 for(var i=0;i<length-2;i++){
  if(Math.random()>0.91&&text[text.length-1]!=" ") text+=". "+rnd(1);
   else if(Math.random()>0.75) text+=" ";
    else text+=rnd(1).toLowerCase();
 };
 text+=rnd(2).toLowerCase()+".";
 return text;
}
 function rnd(max) {
  var abc = new Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
  var nahodneslovo="";
  for(var i=0;i<max;i++) {
   nahodneslovo+=abc[Math.floor(Math.random()*abc.length)]
  }                                                           
  return nahodneslovo;
 } 


Najdi si, jak převádět čísla na písmenka (myslím, že to jde. Skus hledat třeba „CharAt javascript“) a nebudeš potřebovat funkci rnd.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: