NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Generátor básní v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
carpi
Neregistrovaný
Avatar
carpi:14.5.2013 19:26

V první řadě bych odsadil bloky, takhle se to neda cist

 
Odpovědět
14.5.2013 19:26
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na
David Hynek:14.5.2013 21:13

v počítači to tak mám, tady to odstranilo tabulátory

Odpovědět
14.5.2013 21:13
Čím víc vím, tím víc věcí nevím.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na David Hynek
David Hartinger:14.5.2013 21:17

Ty se musely odstranit nedopatřením když jsi vkládal text, editor taby podporuje.

Odpovědět
14.5.2013 21:17
New kid back on the block with a R.I.P
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:14.5.2013 21:18

v pohodě... už jsem je tam přidal

Odpovědět
14.5.2013 21:18
Čím víc vím, tím víc věcí nevím.
Avatar
Neaktivní uživatel:26.5.2017 11:54

Nefungují háčky a čárky, mění se na otazníky.

Odpovědět
26.5.2017 11:54
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:26.5.2017 12:09

Ale to přeci není tím skriptem :) Musíš ho vložit do HTML stránky, kde je nastavené UTF-8 kódování, to jsou úplné základy, viz zdejší kurzy.

Odpovědět
26.5.2017 12:09
New kid back on the block with a R.I.P
Avatar
Neaktivní uživatel:26.5.2017 15:29

No to mě napadlo... :-D
Ale přišlo mi to divné u hotového scriptu...

Odpovědět
26.5.2017 15:29
Neaktivní uživatelský účet
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
mkub:26.5.2017 18:19

ten problem mas v kodovani toho suboru...
nastav si IDE, v ktorom to pises na utf-8, nasledne si nastav aj ten script na utf-8 a vyvaruj sa Windowsovemu notepadu - ten uklada iba vo Windows kodovani (napr. pre strednu Europu: cp-1250), co je uplne ine kodovanie, nez utf-8

 
Odpovědět
26.5.2017 18:19
Avatar
Odpovídá na mkub
Neaktivní uživatel:26.5.2017 19:18

Používám Notepad++

Odpovědět
26.5.2017 19:18
Neaktivní uživatelský účet
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
David Hynek:27.5.2017 11:43

Uf, to je už let.

Michale, když budeš psát program třebas v Notepadu, tak musíš soubor ukládat v nějakém kódování. Používám UTF8, totéž doporučuji tobě. Tak jak ten program je, vygeneruje část HTML, ale jen tu, která by měla být vložená mezi tagy Body. Tedy hlavičku stránky v HTML musíš napsat sám a také tam dát kodování znakové sady. Tedy opět UTF8.

Stránka by pak vypadala asi takto. Musíš ji samozřejmě uložit jako soubor PHP:

<?php
session_start();
header('Content-type: text/html; charset=utf-8');

/*
Velmi jednoduchý generátor básniček. Rozšíření je možné podle vašich potřeb.
Je to můj první větší script v OOP, tak to prosím berte velmi s rezervou.
*/

class Basen
{

public $obsah = ""; // záznam obsahu básně

private $pocet_slok = 1; // počet slok básně

private $vety = array("prid rod pod slov","pod prid rod slov","pod rod slov","rod priv pod slov");  // styl vět

private $styl = array("112211","221133","121233","332211","1122","1313","2332","11221122");  // styl básně

private $slova = array(
        "rod1" => array("muž","syn","dědeček","starosta","alkoholik","policista","saniták","svářeč","programátor","řezník","hrubián","hlídač krav","veterán"),
        "rod2" => array("sestra","matka","dcera","jeptiška","dojička","zpěvačka","básnířka","malířka","kurva","řidička","lazebnice","krakatice","večernice","polednice"),
        "rod3" => array("dítě","prase","struhadlo","švihadlo","strašidlo","mýdlo","jídlo","víno","leštidlo","lepidlo","sedadlo","lehátko","ořezávátko","na koberce klepadlo"),
        "pod1" => array("kredenc","počítač","stůl","parní válec","soustruh","olejový hever","boiler","traktor","klakson","katamarán","hoboj","router"),
        "pod2" => array("postel","kabelku","žehličku","ředkvičku","lampičku","tlamičku","lahvičku","stoličku","překližku","vydličku","hoblovku","vrtačku"),
        "pod3" => array("pivo","auto","letadlo","pyžamo","zrdcadlo","lepidlo","hovado","lákadlo","hekadlo","tričko","počítadlo","švihadlo"),
        "prid1" => array("velký","barevný","pevný","silný","jasný","přesný","krásný","starý","unavený","naštvaný","kouzelný","prolhaný","proradný","záhadný"),
        "prid2" => array("tlustá","šílená","ožralá","krásná","štíhlá","vláčná","drahá","levná","mladá","pihovatá","proradná","osamělou","odohodlanou","vyplašená"),
        "prid3" => array("skvělé","drahé","malé","silné","výkonné","bouřlivé","strnulé","rozbité","přiskříplé","zapomenuté","vážné","odhodlané","unavené","uplacené"),
        "slov1" => array("rozladil","hladil","radil","rozbil","zastřelil","zabalil","zapálil","polil","rozdrobil","opravil","opálil","chytil","odpálil","opustil","obrátil"),
        "slov2" => array("rozbila","štípala","vábila","hrozila","žárlila","shodila","zkrátila","mlátila","vypnula","předělala","přeřezala","osolila","omlátila","nabarvila"),
        "slov3" => array("letělo","hledělo","stávalo","načalo","bolelo","křupalo","chápalo","tápalo","skákalo","přestalo","řvalo","žvatlalo","zuřilo","schovalo","klepalo"),
        "priv1" => array("své","vlastní","kamarádův","otcův","drahý"),
        "priv2" => array("svou","cizí","novou","papírovou","zlevněnou"),
        "priv3" => array("své","jiné","zahraniční","levné","rozbité"),
); // pole slov

// upraví větu, první písmeno bude velké
private function uprav_vetu($s, $e ='utf-8')
{
        if (function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($s)) {
                $s = mb_strtolower($s, $e);
                $u = mb_strtoupper($s, $e);
                preg_match('/(.)/us', $u, $m);
                $s = $m[1] . mb_substr($s, 1, mb_strlen($s, $e), $e);
        }
        else
        {
                $s = ucfirst($s);
        }
        return $s;
}

// vytvoří větu, vybere styl a doplní slova
private function vrat_vetu($x,$veta)
{
        $veta = preg_replace("/(prid)/i",($this->slova["prid$x"][array_rand($this->slova["prid$x"])]),$veta);
        $veta = preg_replace("/(rod)/i",($this->slova["rod$x"][array_rand($this->slova["rod$x"])]),$veta);
        $veta = preg_replace("/(pod)/i",($this->slova["pod$x"][array_rand($this->slova["pod$x"])]),$veta);
        $veta = preg_replace("/(slov)/i",($this->slova["slov$x"][array_rand($this->slova["slov$x"])]),$veta);
        $veta = preg_replace("/(priv)/i",($this->slova["priv$x"][array_rand($this->slova["priv$x"])]),$veta);
        return $this->uprav_vetu($veta).".";
}

// vytvoří tituloek básně
private function titulek()
{
        return "<h1>".($this->vrat_vetu(rand(1,3),"prid rod"))."</h1>\n\n";
}

// vytvoří obsah básně, vegeneruje věty a pošle je ke zpracování do vrat_vetu
private function vytvor_obsah()
{
        $obsah = "";
        for($b=0;$b<$this->pocet_slok;$b++)
        {
                $obsah .= "<p>";
                $x = rand(0,7);
                for($a=0;$a<(strlen($this->styl[$x]));$a++)
                {
                        $veta = $this->vety[array_rand($this->vety)];
                        $obsah .= $this->vrat_vetu($this->styl[$x][$a],$veta)."<br />\n";
                }
                $obsah .= "</p>\n";
        }
        return $obsah;
}

public function __construct($n)
{
        if($n < 1) $n = rand(2,5);
        $this->pocet_slok = $n;
}

public function __toString()
{
        $this->obsah .= $this->titulek();
        $this->obsah .= $this->vytvor_obsah();
        return $this->obsah;
}

}


// použití třídy Basen
// 0 = použije se náhodné číslo mezi 1 - 5, jinak se vrtátí tolik slok kolik budete potřebovat

?>
<!DOCTYPE html>
<html lang="cs-cz">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Báseň</title>
  </head>
  <body>
<?php
   $basen = new Basen(5);
   echo $basen;
?>
  </body>
</html>

Nepočítej s nějakým zázrakem, který bys mohl recitovat nějaké holce, je to jen zkouška funkčnosti.

Ať se daří.

Odpovědět
27.5.2017 11:43
Čím víc vím, tím víc věcí nevím.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 14.